[git] 커밋하기 전에 git에서 파일 diff를 보는 방법

이것은 종종 나에게 일어난다 :

나는 하루나 이틀 동안 동시에 두 가지 관련 변경 사항을 작업하고 있으며 커밋 할 때 특정 파일에서 변경된 내용을 잊어 버립니다. (이것은 개인 git repo이므로 커밋에서 둘 이상의 업데이트가 가능합니다.)

체크인하려는 로컬 파일과 해당 파일의 마지막 커밋 사이의 변경 사항을 미리 볼 수있는 방법이 있습니까?

다음과 같은 것 :

git diff --changed /myfile.txt

그리고 다음과 같이 인쇄됩니다.

line 23
  (last commit): var = 2+2
  (current):     var = myfunction() + 2

line 149
  (last commit): return var
  (current):     return var / 7

이렇게하면 마지막으로 체크인 한 이후 해당 파일에서 수행 한 작업을 빠르게 확인할 수 있습니다.



답변

git add아직 먹지 않은 것을보고 싶다면 :

git diff myfile.txt

또는 이미 추가 된 변경 사항을 보려면

git diff --cached myfile.txt


답변

git diff HEAD file

마지막 커밋에서 작업 트리에 추가 한 변경 사항이 표시됩니다. 모든 변경 사항 (단계적 또는 단계적 제외)이 표시됩니다.


답변

로컬 차이를 확인하려면

git diff myfile.txt

또는 diff 도구를 사용할 수 있습니다 (일부 변경 사항을 되돌리려는 경우).

git difftool myfile.txt

git difftool보다 효율적으로 사용하려면 Meld, DiffMerge 또는 OpenDiff와 같은 즐겨 사용하는 GUI 도구를 설치하고 사용하십시오.

참고 : .파일 이름 대신 (을)를 사용하여 현재 디렉토리 변경 사항을 볼 수도 있습니다 .

각 라인마다 변경 사항을 확인하려면 다음 git blame을 사용하십시오. 커밋에서 커밋 된 라인을 표시합니다.


커밋하기 전에 실제 파일을 보려면 ( master브랜치가 있는 곳 ) 다음을 실행하십시오.

git show master:path/my_file


답변

에 대한 -v(또는 --verbose) 옵션을 시도 했습니까 git commit? 메시지 편집기에서 커밋 차이를 추가합니다.


답변

파일을 가장 확약적인 마지막 커밋과 비교하려는 경우 고려해야 할 또 다른 기술 :

git diff master myfile.txt

이 기술의 장점은 다음을 사용하여 두 번째 커밋과 비교할 수 있다는 것입니다.

git diff master^ myfile.txt

그리고 그 전에 하나 :

git diff master^^ myfile.txt

또한 마스터 브랜치에 있지 않은 경우 캐럿 ‘^’문자로 ‘~’를 대체하고 ‘마스터’로 ‘you branch name’을 ‘you’로 대체 할 수 있습니다.


답변

이것이 GUI를 보증하는 완벽한 유스 케이스라고 생각합니다. -나는 그것이 명령 줄 내에서도 충분히 달성 될 수 있음을 완전히 이해하고 있지만.

개인적으로, 모든 커밋은 git-gui에서 수행합니다. 필요한 경우 별도의 덩어리 / 줄로 여러 개의 원자 커밋을 수행 할 수 있습니다.

Gut Gui를 사용하면 형식이 잘 지정된 색상의 인터페이스에서 diff를 볼 수 있으며 다소 가볍습니다. 이것도 체크 아웃해야 할 것 같습니다.


답변

macOS에서 git root 디렉토리로 이동하여 git diff *