커밋되지 않은 로컬 변경 사항과 원본을 차이점으로 만드는 방법 커밋되지 않은 로컬 변경

리포지토리를 복제하고 파일 수정을 시작했다고 가정 해 봅시다. 커밋되지 않은 로컬 변경 사항이 있으면 다음 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