programing

Git가 내 파일이 변경된 것을 인식하지 못하는 이유는 무엇입니까? 따라서 Git add가 작동하지 않습니다.

javamemo 2023. 8. 28. 20:43
반응형

Git가 내 파일이 변경된 것을 인식하지 못하는 이유는 무엇입니까? 따라서 Git add가 작동하지 않습니다.

bashbash를 .그것들은 이미 거기에 있고, 나는 새로운 라인과 코드 등으로 새로운 버전을 업로드하고 있습니다.하지만 내가 노력할 때git add그리고 나서.git status다음과 같이 표시됩니다.

분기 마스터에

커밋할 내용 없음, 작업 디렉토리 정리

그리고 제가 사용하고 있는 파일이 방금 수정되었습니다.

예전에 Git 인덱스를 파일에서 '변경되지 않은 것으로 가정'으로 설정하는 문제가 있었습니다.

다음을 사용하여 Git에 파일 변경 사항 무시를 중지하도록 지시할 수 있습니다.

git update-index --no-assume-unchanged path/to/file

만약 그것이 도움이 되지 않는다면, 다른 이상한 경우에 재설정으로 충분할 수도 있습니다.


실제로 캐쉬된 파일을 제거하고 작동하도록 재설정했습니다.

git rm --cached path/to/file
git reset path/to/file

git rm --cached인덱스에서 파일만 제거하는 것을 의미합니다.reset마지막 커밋에서 Git 인덱스를 다시 로드하도록 Git에 알립니다.

미친 것처럼 들리지만, 때때로 여러분은 자신이 옳다고 생각함에도 불구하고 올바른 상황에 있지 않습니다.예를 들어, 상위 디렉토리를 이동했지만 텍스트 편집기에서 리포지토리를 전환하는 것을 잊었을 수 있습니다.또는 그 반대의 경우: 텍스트 편집기에서는 올바른 위치에 있지만 명령줄에서는 잘못된 위치에 있습니다.첫 번째 상황에서는 올바른 파일에서 편집을 수행하지만 명령줄에 열려 있는 폴더와 동일하지 않기 때문에 실제로는 잘못된 파일입니다.두 번째 상황에서는 실제로 올바른 파일을 편집했지만 명령줄의 올바른 디렉터리에 있지 않기 때문에 명령줄 git에서 변경 내용을 인식하지 못합니다.

파일을 확인합니다.작업하려는 파일의 파일 또는 확장자 또는 파일의 경로가 의 항목과 일치하는 것을 발견할 수 있습니다..gitignore이는 해당 파일이 무시되고 변경된 파일로 인식되지 않는 이유를 설명합니다.

이것은 제가 비슷한 문제를 겪었을 때에도 마찬가지였습니다.

이미 설명했듯이 파일에는 기본적으로 파일을 수정하지 않을 것임을 알려주는 "assume-unchanged"로 플래그가 지정되어 있으므로 변경 사항을 추적할 필요가 없습니다.그러나 이는 여러 파일에 영향을 미칠 수 있으며 작업 공간이 큰 경우 하나씩 모두 확인하지 않을 수 있습니다.그런 경우에는 git update-index --really-refresh를 시도할 수 있습니다.

문서에 따르면:

Like --refresh, but checks stat information unconditionally, without regard to the "assume unchanged" setting.

기본적으로 "변경되지 않은 가정" 플래그에 관계없이 모든 파일의 변경사항을 추적하도록 Git을 강제합니다.

글쎄요, 우리는 이 질문에 대답하기에 충분하지 않기 때문에 몇 가지 추측을 해 보겠습니다.

하기 위해을 저장했습니다.git stash pop

을 했고 그것들을, 을 신은변화있커다니습했합다볼, 커수니있야어밋을당신에서 볼 수입니다.git log

은 어떤 의 변경을 했습니다.git reset --hard또는 변경사항이 리필로그에 있을 수 있습니다.git reflog --all그 다음에 만약 당신이 그것을 발견한다면 심판을 체크아웃하거나 체리로 장식합니다.

당신은 같은 보고서를 여러 번 체크아웃했고 잘못된 보고서에 있습니다.

다음 명령들이 나에게 효과가 있었습니다.

rm .git/index

git reset

GIT 서브모듈의 구성이 잘못되었습니다.▁that▁director▁commands▁on▁i가 있는 에 이러한 명령을 내렸습니다..git이전 폴더:

git rm --cached sub/directory/path -f

그 때 그 디렉토리들이 나타났습니다.git status.

만일의 경우를 대비하여 이를 시도하기 전에 레포의 복사본을 만드는 것이 좋습니다.

WinMerge 도구를 통해 차이점을 전송하여 파일을 변경할 때 Windows에서 이러한 현상이 발생했습니다.WinMerge(최소한 내 컴퓨터에서 구성된 방식)가 변경된 파일의 타임스탬프를 업데이트하지 않는 경우가 있습니다.

Windows에서 git 상태는 무엇보다도 파일의 타임스탬프와 파일 크기의 변화를 사용하여 파일의 변경 여부를 결정합니다.그래서 타임스탬프가 업데이트되지 않았기 때문에 파일 크기만 확인할 수 있었습니다.안타깝게도 문제의 파일은 내용이 7.1.2에서 7.2.0으로 변경된 단순 버전 파일이었습니다.즉, 파일 크기도 변경되지 않았습니다.WinMerge에 의해 변경되었고 타임스탬프가 업데이트되지 않았지만 git 상태에 의해 변경이 감지된 후 크기가 다른 다른 파일도 정상입니다.

이런 이상한 일이 있었어요이클립스 케플러의 git 플러그인은 자동으로 내 모든 프로젝트 폴더를 .gitignore 폴더에서 무시된 것으로 표시했습니다.

가 가내갔에 때.commit에서.Team메뉴를 선택하면 모두 무시됨으로 설정됩니다.제가 알 수 있는 한, 이것은 제가 그것들을 부모 프로젝트에서 파생된 것으로 설정했기 때문입니다.로 표시 해제dervied이것을 고쳤습니다.인디고에서 이런 걸 본 적이 없어요.누군가에게 도움이 되길 바랍니다.

TL;DR; 올바른 저장소에 있습니까?

제 이야기가 좀 웃기긴 하지만 비슷한 시나리오를 가지고 있을 수도 있는 사람과 함께 할 수도 있다고 생각해서 여기에 공유해요.

제 에는 두 의 별도 가 있었습니다.repo1그리고.repo2동일한 된 이름 이 지 디 리 에 구성 됨 토source이 두 저장소는 기본적으로 제가 회사에서 일하고 또 일하는 두 제품의 저장소입니다.문제는 표준 가이드라인으로서, 모든 제품의 소스 코드의 디렉터리 구조가 우리 회사에서 정확히 같다는 것입니다.

그래서 저는 무의식중에 정확히 같은 이름의 파일을 수정했습니다.repo2내가 바꾸기로 했던 것.repo1그래서, 나는 명령을 계속 실행했습니다.git statusrepo1그리고 그것은 계속해서 같은 메시지를 주었습니다.

분기 마스터에

커밋할 내용 없음, 작업 디렉토리 정리

.그 후 제 동료는 그것을 독립적인 눈으로 관찰했고 제가 틀렸지만 매우 유사하게 생긴 저장소에 있다는 것을 알게 되었습니다.으로 순간.repo1Git는 변경된 파일을 알아차리기 시작했습니다.

그리 흔한 경우는 아닙니다.하지만 당신은 절대 모릅니다!

당신은 당신의 셸 아래에서 디렉토리를 옮겼습니까?백업에서 프로젝트를 복원한 경우 이 문제가 발생할 수 있습니다.이 문제를 해결하려면, 그냥.cd밖으로 나갔다가 다시 들어갔습니다.

cd ../
cd -

Sublime Text-3를 사용하면서 비슷한 문제가 있었습니다.코드를 새로 변경하고 저장한 후 git add ./status 명령을 사용해보니 "branch already-update"라는 응답이 있었습니다.텍스트 편집기에 업데이트를 저장해도 파일은 실제로 변경되지 않았습니다.다른 편집기에서 파일을 열고 변경 사항을 저장하는 것이 저에게 효과가 있었습니다.

저도 같은 문제가 있었습니다.알고 보니 프로젝트 복사본이 두 개 있었는데 터미널이 잘못된 프로젝트 폴더에 있었습니다!

Visual Studio에서 파일을 편집하면 파일이 저장되지 않더라도 즉시 git 변경 사항이 나열됩니다.따라서 파일을 수동으로 저장하기만 하면 됩니다(현재 표시된 파일의 경우 Ctrl+S 또는 모든 프로젝트 파일의 경우 Ctrl+Shift+S). gitbash가 해당 파일을 선택합니다.

저도 그런 일이 있었습니다, 저는 위에서 언급한 방법을 시도했지만 아무 도움이 되지 않았습니다.그 다음 해결책은 GUI가 아닌 터미널을 통해 파일을 변경하는 것이었습니다.나는 이것이 왜 효과가 있었는지는 모르지만 효과가 있었습니다.터미널 git에서 nano를 통해 파일을 편집한 후 변경된 것으로 인식하여 추가하고 커밋할 수 있었습니다.

저도 같은 문제가 있었습니다.그리고 내가 커밋되어야 하는 파일들은 결코 선언되지 않았습니다..gitignore파일도 있습니다.

내 경우에는 파일을 강제로 추가합니다.-f플래그가 스테이징으로 승격되어 문제를 해결했습니다.

git add -f <path to file>
git update-index --really-refresh

이 명령을 사용하면 폴더의 인덱스를 업데이트할 수 있습니다.

Google Drive 데스크톱에서 프로젝트 파일을 동기화한 후에도 Git에서 변경 사항을 감지하지 못했기 때문에 동일한 문제가 발생했습니다.

제가 발견한 것은 sudo 자격 증명을 가진 --cached -r. 이 gitm이 작동한다는 것입니다.그러면 Git 재설정을 수행하지 마십시오. Git 상태만 재설정되고 문제가 발생한 시점으로 모든 것이 다시 설정됩니다.

따라서 Linux 및 Mac의 경우 다음과 같은 이점이 있습니다.

`sudo git rm --cached -r .`

일반적으로 이 문제를 해결하려면 먼저 파일을 편집하고 있는지 확인하십시오.소스 파일 대신 transcript 파일을 편집할 때 이 문제가 발생했습니다(transcript 버전은 소스 제어 하에 있지 않습니다).

Git 클라이언트(Gitg)가 이 문제를 발생시켰습니다.평소에 실행하던 일반 명령어가 작동하지 않았습니다.프로젝트의 모든 파일을 터치하는 것조차 효과가 없었습니다.

저는 그것을 고칠 방법을 찾았는데 아직도 원인이 무엇인지 잘 모르겠습니다.프로젝트 디렉토리를 복사합니다.의 " 누된파복사디리의표다디니시됩에리터"에됩니다.git status이름을 변경하면 동일한 작업이 수행될 수 있습니다.

심볼 링크를 만들지 않아야 합니다(ln -s source dest 에서. Windows용 Git Bash 내부에서 실행됩니다.

심볼릭 링크를 만들지 않고 소스를 대상에 딥 복사합니다.

저는 Git Bash for Windows(버전 2.16.2)의 MINGW64 터미널에서 OP와 동일한 동작을 경험하여 제 '편집된' 변경 사항이 실제로 원래 디렉터리에 있었고 Git Bash 명령은 변경되지 않은 딥 복사본 내에서 생성되었습니다.

문제가 발생했지만, 두 개의 디렉토리만 있었고 두 개의 디렉토리가 모두 Git 하위 모듈로 구성되었다는 사실을 알 수 없었습니다., 그은 이 링크의 중이었습니다. 하는 것이 어게그일일는지만저모지르전는혀, 그은과이링지크의디침중것하다니오습었렉는이아것라니토히려이는리하제거를떻만따지일것었르는이를부정런이어났▁do▁how▁(▁was▁process▁directory,▁to▁follow▁but▁some하것오▁happened니▁i습다었▁link는▁the이▁that▁butions▁on▁the아라려히니것이▁this▁instructgit add path/to/dir

VSCode를 사용하는 경우 먼저 변경 내용을 저장해야 git가 이를 인식할 수 있습니다.

누르기:

Ctrl+Shift+S

Command+S »

지금이다git status다시

어떤 종류의 파일을 업로드하려고 합니까?이제 저는 거의 한 시간 동안 제 css 수정사항을 업로드합니다.하지만 이 CSS는 스타일 파일에서 컴파일되었기 때문에 그냥 무시했습니다.제가 스타일 소스를 바꿨을 때 모든 것이 작동했습니다.

도움이 되길 바랍니다.

때때로 의존하고 git 버전별로 그리고 만약 당신이 하는 것을 잊는다면.git add ..

변경 하려면 always 리토변내확용인하항사면상용려를 합니다.git status추적되지 않고 변경된 모든 파일을 표시합니다. ㅠㅠgit diff추가된 파일만 표시합니다.

저도 같은 문제가 있습니다. VS2015는 제 js 파일 변경을 인식하지 못했고, 저장소 설정에서 원격을 제거한 다음 원격 URL 경로를 다시 추가하여 문제를 해결했습니다.

vieditor로 서버에 패치 파일을 만들 때도 비슷한 문제가 있었습니다.띄어쓰기가 문제였던 것 같습니다.로컬에서 패치를 푸시했을 때 배포가 적절했습니다.

VSCode를 사용하다가 새 컴퓨터로 전환하면 자동 저장이 해제되어 파일을 변경해도 Git이 인식하지 못할 수 있습니다.

이것으로 나의 문제가 해결되었습니다.

다음은 저에게 효과가 있었습니다.

git mv tesfile.js TestFile.js

자세한 내용은 https://stackoverflow.com/a/16071375/11677643 에서 확인하십시오.

모든 변경 사항이 새 디렉터리에 있을 때 이 문제가 발생했습니다.첫 번째 파일을 추가했습니다.

git add newdirectory/new.file

그리고 나서.git status디렉터리의 다른 파일을 예상대로 표시했습니다.

언급URL : https://stackoverflow.com/questions/16993082/why-doesnt-git-recognize-that-my-file-has-been-changed-therefore-git-add-not-w

반응형