programing

Git 클론 직후 수정된 것으로 표시되는 파일

subpage 2023. 7. 3. 22:54
반응형

Git 클론 직후 수정된 것으로 표시되는 파일

저는 지금 저장소에 문제가 있고, 제 깃푸는 보통 좋지만, 이 문제를 해결할 수 없을 것 같습니다.

이 리포지토리를 복제할 때cd 저소로장,git status에는 여러 파일이 변경된 것으로 표시됩니다.참고: 편집기 등에서 리포지토리를 열지 않았습니다.

저는 이 가이드인 http://help.github.com/dealing-with-lineendings/, 을 따르려고 했지만, 이것은 제 문제에 전혀 도움이 되지 않았습니다.

는 난시다했을 요.git checkout -- .여러 번, 하지만 아무것도 하지 않는 것처럼 보입니다.

Mac에 있고 저장소 자체에 하위 모듈이 없습니다.

파일 시스템은 Mac에서 "Journaled HFS+" 파일 시스템이며 대소문자를 구분하지 않습니다.은 한 약에서 들었습니다)로 되어 , 파일을 79KB가 . 다음을 참조하십시오.git diff특별히 도움이 되지 않습니다.하는 것에 대해 들어 본 적이 있습니다.git config --global core.trustctime false도움이 될 수도 있습니다. 저장소가 있는 컴퓨터로 돌아가면 시도해 보겠습니다.

파일 시스템의 세부 정보를 사실과 함께 변경했습니다!그리고 나는 시도했습니다.git config --global core.trustctime false별로 효과가 없었던 속임수

저장소를 복제한 후 Mac에서도 동일한 문제가 발생했습니다.모든 파일이 변경된 것으로 가정합니다.

를 한 후git config --global core.autocrlf input여전히 모든 파일을 변경된 것으로 표시하고 있었습니다. 발견했습니다..gitattributes다음과 같은 파일이 있는 홈 디렉토리에 있습니다.

* text=auto

저는 그것에 대해 논평했고 이제부터 다른 복제된 저장소는 모두 정상적으로 작동했습니다.

git config core.fileMode false

내 경우에 이 문제를 해결했습니다.

https://git-scm.com/docs/git-config

TL;DR;

core.fileMode

false인 경우 인덱스와 작업 트리 간의 실행 가능한 비트 차이는 무시되며 FAT와 같은 손상된 파일 시스템에 유용합니다.git-update-index(1)를 참조하십시오.

기본값은 true이지만 git-clone(1) 또는 git-init(1)이 core를 시도하고 설정합니다.저장소가 생성될 때 적절한 경우 fileMode false.

Ubuntu 생각에는시스템을 가지고 있습니다.다른 모든 개발자들은 Ubuntu(제 생각에는)에 있으므로 대소문자를 구분하는 파일 시스템을 가지고 있습니다.하지만 Mac에서는 그렇지 않습니다.실제로, 제가 그것들을 사용하여 보았을 때, 모든 파일은 소문자 쌍둥이였습니다.git ls-tree HEAD <path>.

제가 그들 중 한 명에게 그것을 해결하도록 하겠습니다.

Windows를 사용하고 있는 것 같습니다.당신이 링크한 GitHub 페이지는 세부사항을 거꾸로 가지고 있습니다.문제는 CR + LF 줄 끝이 이미 저장소에 커밋되었으며 코어가 있기 때문입니다.autocolf가 true 또는 input으로 설정되면 Git는 줄 끝을 LF로 변환하려고 합니다.git status모든 파일이 변경되었음을 나타냅니다.

이 저장소가 액세스만 원하는 리포지토리일 경우 다음 명령을 실행하여 문제를 실제로 해결하지 않고 숨기기만 하면 됩니다.

git config core.autocrlf false

이 저장소가 사용자가 현재 참여하고 있으며 변경 내용을 커밋할 수 있는 리포지토리인 경우저장소의 모든 줄 끝을 CR + LF 대신 LF를 사용하도록 변경하는 커밋을 수행하여 문제를 해결한 다음 이후에 이러한 문제가 다시 발생하지 않도록 조치할 수 있습니다.

다음은 git 속성 man 페이지에서 직접 가져온 것이며 깨끗한 작업 디렉토리에서 수행해야 합니다.

echo "* text=auto" >>.gitattributes
rm .git/index     # Remove the index to force Git to
git reset         # re-scan the working directory.
git status        # Show files that will be normalized.
git add -u
git add .gitattributes
git commit -m "Introduce end-of-line normalization"

할 이 표화되하파경표에 git status를 실행하기 합니다.git add -u.

manual.pdf      -text

반대로 Git가 탐지하지 않는 텍스트 파일은 수동으로 정규화를 활성화할 수 있습니다.

weirdchars.txt  text

다음 명령을 실행하십시오.그러면 문제가 해결될 수도 있습니다.

# Remove everything from the index.
git rm --cached -r .

# Write both the index and working directory from git's database.
git reset --hard

Visual Studio에서 Git를 사용하는 경우 .gitignore 및 .git 특성 파일을 자동으로 생성할 수 있습니다.auto generated .get 특성 파일의 행은 다음과 같습니다.

* text=auto

이 줄은 파일의 맨 위에 있습니다.우리는 단지 그 앞에 #을 추가하여 라인 아웃에 주석을 달 필요가 있었습니다.그렇게 한 후, 일은 예상대로 진행되었습니다.

이 문제는 다른 파일 권한에서도 발생할 수 있습니다.

새로 복제된 저장소(윈도우즈, Cygwin):

$ git ls-tree HEAD
100755 blob 8099ea496a2c78d71125d79a05855f60ebf07904    testfile
   ↑↑↑

기본 원격 저장소(Linux):

$ git ls-tree HEAD
100644 blob 8099ea496a2c78d71125d79a05855f60ebf07904    testfile
   ↑↑↑

저는 "왜 이런 일이 일어나는지"에 대한 답을 더 추가하고 싶었습니다. 왜냐하면 이미 해결 방법에 대한 좋은 답이 있기 때문입니다.

그렇게,.gitattributes을 가지고 있습니다.* text=auto설정으로 인해 이 문제가 발생합니다.

경우, 브랜치에 있는 에 제경, GitHub의 파일이 있었습니다.\r\nㅠㅠㅠㅠㅠㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ\nㅠㅠ 이 뭘 하지만 Git이 무엇을 확인하는지는 모릅니다.내 박스에 입니다.\n), , , 로 한 것 \r\n결말Git는 체크아웃된 것을 보기 때문에 불평합니다.\r\n합니다.\n"따라서 파일은 "수정"됩니다.

지금은 그게 제가 이해하는 바입니다.

저도 같은 문제입니다.원격 Git 저장소에서 "textField.png" 및 "textfield.png"과 같은 이름을 가진 여러 이미지를 볼 수 있었지만 로컬 저장소에서는 볼 수 없었습니다.프로젝트 코드에 사용되지 않은 "textField.png"만 볼 수 있었습니다.

제 동료 대부분은 ext4 파일 시스템을 사용하는 Ubuntu에 있는 반면 저는 APFS를 사용하는 Mac에 있습니다.

엘리엇의 답변 덕분에 해결책은 매우 간단했습니다.먼저 Ubuntu의 동료에게 대문자로 중복된 파일 버전을 삭제해 달라고 요청한 다음 원격으로 커밋하고 푸시했습니다.

그런 다음 다음을 실행했습니다.

# Remove everything from the index.
git rm --cached -r .

# Write both the index and working directory from git's database.
git reset --hard

마지막으로, 우리는 이러한 일이 다시 일어나지 않도록 모든 개발자가 Git 구성을 변경해야 한다고 결정했습니다.

# Local Git configuration
git config core.ignorecase true

또는

# Global Git configuration
git config --global core.ignorecase true

저도 같은 문제가 있었습니다.Mac도 있습니다.리눅스 시스템의 저장소를 살펴보니 두 개의 파일이 있었습니다.

Geoip.dat 및 GeoIP.dat

Linux 시스템에서 사용되지 않는 것을 제거하고 Mac에 저장소를 다시 복제했습니다.중복된 저장소가 있을 때 저장소 복사본을 가져오거나, 커밋하거나, 저장하거나, 꺼낼 수 없었습니다.

저도 같은 문제가 있었습니다.이 경우 저장소를 복제했는데 일부 파일이 즉시 누락되었습니다.

이 문제는 파일의 경로와 파일 이름이 Windows에 비해 너무 길기 때문에 발생했습니다.이 문제를 해결하려면 하드 디스크 드라이브 루트에 최대한 가깝게 리포지토리를 복제하여 파일 경로의 길이를 줄입니다.를 들어 예들 복제대상으로 합니다.C:\A\GitRepoC:\Users Documents\yyy\Desktop\GitRepo.

호된파일편다라는 합니다..git/config:

sudo gedit .git/config

또는:

sudo vim .git/config

내용물

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true

[remote "origin"]
    url = kharadepramod@bitbucket.org:DigitalPlumbing/unicorn-magento.git
    fetch = +refs/heads/*:refs/remotes/origin/*

[branch "master"]
    remote = origin
    merge = refs/heads/master

[branch "productapproval"]
    remote = origin
    merge = refs/heads/productapproval

filemode=true안으로filemode = false.

대화형 리베이스를 하려고 했는데 수정된 파일이 있다고 해서 지금은 할 수가 없습니다.깨끗한 저장소로 돌아가기 위해 모든 것을 시도했지만 아무 것도 되지 않았습니다.다른 대답들은 도움이 되지 않았습니다.하지만 이게 마침내 효과가 있었어요

git rm -rf the-folder-with-modified-stuff
git ci -m 'WAT'

쾅! 저장소를 청소합니다.문제는 해결됐습니다.그런 다음 마지막 커밋을 취소하면 됩니다.rebase -i그리고 마침내 모든 것이 다시 깨끗해졌습니다.이상해요!

새 버전의 macOS의 경우 OS의 보안 기능으로 인해 이 문제가 발생할 수 있습니다.

제가 작업하던 저장소에 파일 형식이 *.app인 이진 파일이 있었습니다.

데이터에 는 모든 *.이하지 않았기 은 이 이 안전하지 않다고 하여 macOS 파일 *.app 파일을 했습니다.com.apple.quarantine파일을 실행할 수 없도록 하는 파일 특성입니다.

그러나 이 속성을 파일에 설정하면 파일도 변경되므로 Git change 세트에 이 속성이 표시됩니다.

는 실하면있확수있다습니인할을 하면 됩니다.$ xattr file.app.

파일로 작업할 필요가 없는 한 솔루션은 매우 간단합니다. 그냥추를 추가하세요.*.app binary의 신에게에..gitattributes.

문제는 제 MacBook에서 Mac이 케이스별로 추적하지 않았다는 것입니다.대소문자를 구분하는 APFS "Workspace" 파티션을 만들었습니다.그 이후로 더 이상 상태 오류가 발생하지 않았습니다.

로컬 리포지토리를 다른 폴더에 복사했더니 수정된 파일이 무더기로 표시되었습니다.해결 방법은 수정된 파일을 저장하고 저장된 파일을 삭제하는 이었습니다.리포지토리가 깨끗해졌습니다.

Git가 내 파일(.psd)을 텍스트로 처리하고 있다는 것을 발견했습니다..git 속성에서 이진 유형으로 설정하면 해결되었습니다.

*.psd binary

만약 다른 사람에게 도움이 된다면, 이 문제의 또 다른 원인이 있을 수 있습니다: 다른 버전의 Git.기본 설치 버전의 Git on Ubuntu 18.04 (Bionic Beaver) 박스를 사용하고 있었고 모든 것이 정상적으로 작동하고 있었지만 Git on Ubuntu 16.04를 사용하여 저장소를 복제하려고 시도했을 때 일부 파일이 수정된 상태로 표시되었습니다.

여기에 나와 있는 다른 답변 중 제 문제를 해결한 것은 없지만 두 시스템 모두에서 Git 버전을 일치하도록 업그레이드하면 문제가 해결되었습니다.

MacOS 관련 문제가 있었습니다.

구분하는 것처럼 것을 못하는 도 있을 수 .소문자가 혼합된 , 예를 들어, 혼된소대저/문파이들만장, 어예를지하,Foo.py그리고.foo.py동일한 파일이 됩니다.

동료는 단지 그런 시나리오를 만들어서 만들었습니다.foo.py에서.Foo.py개발 비계의 일부로서. (즉, PEP8 모듈 파일 명명 규칙을 시행할 뿐만 아니라 원본에서 내용을 상당히 리팩터링하여 이러한 종류의 작업을 병행하고자 했습니다.)가 그 변경사항들을 때, ▁fromrote의 모든 수정 사항을 덮어썼습니다.foo.py안으로Foo.py그 때문에 내가 지역적인 변화를 하지 않았을 때, 내가 지역적인 변화를 했다고 생각하게 되었습니다.새로운 복제를 할 때 git는 즉시 다음과 같이 주장했습니다.Foo.py새로운 클론임에도 불구하고 상당한 변화가 있었습니다.

해결책은 이름을 바꾸는 것이었습니다.foo.py원본과 전혀 충돌하지 않는 완전히 다른 파일 이름으로.변경한 후 저장소의 새 복제본에서 문제가 해결되었습니다.

(MacOS의 경우 대/소문자 구분 동작을 설정하기 위한 시스템 구성 플래그가 있지만, 동작을 전환하면 대/소문자 구분 동작이 발생할 수 있으므로 기본 설정으로 유지하는 것이 좋습니다.)

언급URL : https://stackoverflow.com/questions/5009096/files-showing-as-modified-directly-after-a-git-clone

반응형