현재 상태와 마지막 커밋 간의 차이점보기 정확히 기억할 수 없습니다.

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



답변

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

git diff

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

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

git diff --cached

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

git diff HEAD

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


답변

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

git diff HEAD^

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

git diff HEAD^^

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

git diff b6af6qc

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


답변

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

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


답변

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

$ git status

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

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


답변

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

# 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