Programming

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

procodes 2020. 2. 21. 22:36
반응형

커밋하기 전에 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

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


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


로컬 차이를 확인하려면

git diff myfile.txt

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

git difftool myfile.txt

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

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

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


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

git show master:path/my_file

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

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 *


전용 커밋 GUI를 사용하는 것 외에 내가 찾은 가장 좋은 방법은 사용하는 것입니다. git difftool -d그러면 디렉토리 비교 모드에서 diff 도구가 열리고 HEAD를 현재 더티 폴더와 비교합니다.


git difftool -d HEAD filename.txt

터미널에서 VI 슬릿 윈도우를 사용한 비교를 보여줍니다.

참고 URL : https://stackoverflow.com/questions/10039747/how-to-view-file-diff-in-git-before-commit



반응형