리포지토리를 복제하고 파일 수정을 시작했다고 가정 해 봅시다. 커밋되지 않은 로컬 변경 사항이 있으면 다음 git diff test.txt
과 같이 diff를 수행 할 수 있으며 현재 로컬 HEAD와 수정되지 않은 커밋되지 않은 파일 변경 사항의 차이를 보여줍니다. 이러한 변경 사항을 커밋하면 다음을 사용하여 원본 리포지토리와 비교할 수 있습니다git diff master origin/master
그러나 로컬로 커밋 하기 전에 로컬 변경 사항을 서버의 원래 저장소와 비교하는 방법이 있습니까? git diff --cached master origin/master
운없이 다양한 순열을 시도했습니다 .
답변
원격 저장소가 캐시되어 있다고 가정하면 git fetch
이러한 커밋과 비교할 수 있어야합니다. 다음을 시도하십시오 :
$ git fetch origin
$ git diff origin/master
답변
나는 그것이 정확한 질문에 대한 대답이 아니라는 것을 알고 있지만,이 질문 은 지점의 파일과 커밋되지 않은 로컬 파일 을 비교하는 것을 발견 했으며 공유 할 것이라고 생각했습니다.
통사론:
git diff <commit-ish>:./ -- <path>
예 :
git diff origin/master:./ -- README.md
git diff HEAD^:./ -- README.md
git diff stash@{0}:./ -- README.md
git diff 1A2B3C4D:./ -- README.md
(Eric Boehs에게 파일 이름을 두 번 입력 할 필요가 없어서 감사합니다)
답변
기존 파일의 비 단계적 (비추가) 변경 사항을 보려면
git diff
이것은 새 파일을 추적하지 않습니다. 커밋되지 않은 단계적 변경 사항을 보려면
git diff --cached
답변
파일을 시각적으로 비교하려면 다음을 사용할 수 있습니다.
git difftool
변경된 파일마다 diff 앱을 자동으로 시작합니다.
추신 : diff 앱을 설정하지 않은 경우 아래 예제와 같이 수행 할 수 있습니다 ( Winmerge 사용 ).
git config --global merge.tool winmerge
git config --replace --global mergetool.winmerge.cmd "\"C:\Program Files (x86)\WinMerge\WinMergeU.exe\" -e -u -dl \"Base\" -dr \"Mine\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\""
git config --global mergetool.prompt false