로컬로 변경 한 것으로 추정되는 두 개의 파일이있는 저장소가 있습니다.
그래서 나는 이것에 붙어 있습니다.
$ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: dir1/foo.aspx
# modified: dir2/foo.aspx
#
no changes added to commit (use "git add" and/or "git commit -a")
Doing git diff
은 사실이 아닌 것처럼 보이지만 전체 파일 내용이 변경되었다고 말합니다.
흥미롭게도이 파일을 로컬로 변경 한 기억이 없습니다. 이 저장소는 하나의 원격 저장소 (개인, GitHub.com, FWIW)와 함께 사용됩니다.
내가 무엇을 시도하든 이러한 로컬 변경 사항을 삭제할 수 없습니다. 나는 모두를 시도했다 :
$ git checkout -- .
$ git checkout -f
$ git checkout -- dir1/checkout_receipt.aspx
$ git reset --hard HEAD
$ git stash save --keep-index && git stash drop
$ git checkout-index -a -f
즉 , Git에서 단계 화되지 않은 변경 사항을 어떻게 폐기합니까?에 설명 된 모든 것을 시도했습니다 .게다가. 그러나 2 개의 파일은 “변경되었지만 커밋되지 않은”상태로 남아 있습니다.
도대체 두 개의 파일이 이렇게 멈춰 있고 겉보기에는 “테이블을 되돌릴 수 없음”으로 보이는 이유는 무엇입니까 ??
PS는 이미 시도 것 명령을 보여주는 위의 목록에서, 내가 잘못 쓴 git revert
내가 의미하는 경우 git checkout
. 미안하고 노력해야한다고 대답 해주신 분들께 감사드립니다 checkout
. 나는 그것을 수정하기 위해 질문을 편집했습니다. 나는 이미 시도했다 checkout
.
답변
파일의 줄 끝은 무엇입니까? 나는 그들이 CRLF라고 확신합니다. 그렇다면이 가이드를 확인하세요. http://help.github.com/line-endings/
간단히 말해, 커밋시 줄 끝을 LF로 변환하도록 git이 설정되어 있는지 확인한 다음 해당 파일을 커밋해야합니다. 저장소의 파일은 항상 LF 여야하며 체크 아웃 된 파일은 git을 올바르게 설정했다고 가정하고 OS의 기본 파일이어야합니다.
답변
비슷한 문제를 해결하기 위해 몇 시간을 보냈습니다. 체크 아웃 한 원격 지점에서 모든 파일을 삭제하고 git checkout -f
다시 실행할 때에도 4 개의 파일이 ‘변경되었지만 업데이트되지 않음’으로 완고하게 표시되었습니다 (또는이 게시물의 다른 변형)!
이 4 개의 파일은 필요했지만 내가 수정 한 것은 아닙니다. 내 마지막 해결책은 Git이 변경되지 않았다고 설득하는 것입니다. 다음은 모든 체크 아웃 된 파일에 대해 작동하며 ‘수정 됨’상태를 표시합니다. 실제로 수정 된 파일을 이미 커밋 / 숨겨 놓았는지 확인하십시오! :
git ls-files -m | xargs -i git update-index --assume-unchanged "{}"
그러나 Mac OSX에서는 xargs가 약간 다르게 작동합니다 (주석의 경우 Daniel).
git ls-files -m | xargs -I {} git update-index --assume-unchanged {}
나는 이것을 다음 시간을 위해 자리 표시 자로 추가했지만 다른 사람에게도 도움이되기를 바랍니다.
-알
답변
이것은 내 경우에 동일한 문제를 해결하는 방법입니다. open .gitattributes change :
* text=auto
에:
#* text=auto
힌트를 위해 @Simon East에게 감사드립니다.
답변
또 다른 가능성은 차이점 (체크 아웃 명령으로 이러한 파일을 되 돌리지 못하게하는)이 파일 모드 중 하나라는 것입니다. 이것은 나에게 일어난 일입니다. 내 버전의 git에서는 다음을 사용하여 찾을 수 있습니다.
git diff dir1 / foo.aspx
그리고 파일 모드 변경을 보여줍니다. 그래도 되돌릴 수는 없습니다. 그 사용을 위해
git config core.filemode false
또는 추가하여 텍스트 편집기에서 git .config를 변경하십시오.
[핵심]
filemode = false
이렇게하면 다음을 사용할 수 있습니다.
git reset HEAD dir1 / foo.aspx
파일이 사라져야합니다.
(이 모든 것은 어떻게 git ignore mode changes (chmod)? )에 대한 답변에서 얻었습니다.
답변
하려고 노력하다 로컬 변경 사항 되 돌리십시오 .
git checkout -- dir1/foo.aspx
git checkout -- dir2/foo.aspx
답변
수정 된 것으로 표시되는 일부 팬텀 변경 파일이 있었지만 실제로는 동일했습니다.
이 명령을 실행하면 때때로 작동합니다.
(git의 “스마트”하지만 종종 도움이되지 않는 줄 끝 변환을 끕니다)
git config --local core.autocrlf false
그러나 다른 경우 .gitattributes
에는 일부 줄 끝 설정이있는 루트 의 파일 로 인해 autocrlf
꺼져 있어도 특정 파일 에 적용하려고 했습니다. 실제로 도움이되지 않았기 때문에을 삭제 .gitattributes
하고 커밋했으며 파일이 더 이상 수정 된 것으로 표시되지 않았습니다.
답변
git checkout dir1/foo.aspx
git checkout dir2/foo.aspx