현재 상태와 마지막 커밋 간의 차이점보기


93

때로는 커밋하려고 할 때 마지막 커밋 이후 변경된 내용을 정확히 기억할 수 없습니다. 코드의 현재 상태와 마지막 커밋의 차이점을 어떻게 볼 수 있습니까?

답변:


113

아직 색인에 파일을 추가하지 않은 경우 (사용 git add)

git diff

이것은 작업 트리와 인덱스 간의 차이를 보여줍니다.

인덱스에 파일을 추가 한 경우 인덱스와 마지막 커밋 (HEAD) 간의 차이를 표시하려면이를 수행해야합니다.

git diff --cached

마지막으로, 최신 커밋 ( HEAD) 과 비교하여 작업 트리의 변경 사항을 보려면 다음을 수행 할 수 있습니다 (Carlos가 지적했듯이).

git diff HEAD

이러한 변경 사항은 git diff및 의 조합입니다 git diff --cached.


2
git diff작업 트리를 HEAD가 아닌 인덱스와 비교합니다.
Carlos Martín Nieto 2013 년

@ CarlosMartínNieto 맞습니다. 나는 이것을 반영하기 위해 내 게시물을 개선했습니다.
Klas Mellbourn 2013 년

나는 그것을 실행하지만 터미널이 끝나지 않습니다. 어떻게 종료 할 수 있습니까? 아무것도 작동하지 않습니다.
Francisco Corrales Morales

@KlasMellbourn, git diff하나의 diff 메시지에서 인덱스의 상태와 이전 커밋이 가능합니까?
alpha_989

2
잘 알아 냈어요 git diff --cached HEAD^:)
alpha_989

33

방금 커밋했거나 현재 상태와 비교하여 마지막 커밋에서 변경된 사항을 확인하려면 (깨끗한 작업 트리가 있다고 가정) 다음을 사용할 수 있습니다.

git diff HEAD^

이것은 HEAD를 직전 커밋과 비교합니다. 하나도 할 수 있습니다

git diff HEAD^^

플레이 2 커밋 전의 상태와 비교합니다. 현재 상태와 특정 커밋 간의 차이를 보려면 다음을 수행하십시오.

git diff b6af6qc

b6af6qc커밋 해시의 예는 어디에 있습니까 ?


3
Windows cmd 버전의 git에 대한주의 사항-캐럿 자체로 캐럿 (^) 문자를 이스케이프해야합니다. 따라서 "git diff HEAD ^"는 "git diff HEAD ^^"가됩니다. 같은 방법으로 "HEAD ^^"는 "HEAD ^^^^"로 입력됩니다.
Eellor

1
이 답변에서 나는 "마지막 커밋"이 무엇을 의미하는지 약간 불분명하다고 생각합니다. 최신 HEAD^커밋 이전 커밋입니다.
Klas Mellbourn

3

당신은 git에게 현재 / 마지막 커밋을 비교하도록 요청 HEAD합니다.

따라서 작업 트리 git diff HEAD의 현재 상태를 현재 커밋과 비교합니다.


3

이것은 또한 차이점과 변경 / 수정 된 파일을 보여줍니다.

$ git status 

인덱스 파일과 현재 HEAD 커밋 사이에 차이가있는 경로, 작업 트리와 인덱스 파일 사이에 차이가있는 경로, git에 의해 추적되지 않는 작업 트리의 경로 (gitignore (5)에서 무시되지 않음)를 표시합니다. ). 첫 번째는 git commit을 실행하여 커밋하는 것입니다. 두 번째와 세 번째는 git commit을 실행하기 전에 git add를 실행하여 커밋 할 수있는 것입니다.

https://www.kernel.org/pub/software/scm/git/docs/git-status.html


2

이것은 또한 나를 위해 작동합니다.

# The last one
git diff HEAD~1 HEAD

# The last but one, etc...
git diff HEAD~2 HEAD~1

이것은 일반적으로 선형 히스토리에서 작동합니다. 병합 커밋도 있으면 더 까다로울 수 있습니다. 이 문서에서 멋지고 완전한 설명, 특히 커밋 트리 그림 예제를 살펴볼 것을 권장합니다.

https://git-scm.com/docs/gitrevisions

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.