development

Git diff HEAD 대 --staged

big-blog 2021. 1. 6. 20:43
반응형

Git diff HEAD 대 --staged


git diff HEAD의 차이점은 무엇입니까 git diff --staged? 둘 다 시도했지만 둘 다 동일한 결과를 제공합니다.


다음에 대해 git status다음 출력을 가정하십시오 .

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   y
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   x
#

보시다시피 수정되었지만 커밋을 위해 준비되지 않은 파일 하나와 커밋 할 준비가 된 새 파일이 추가되었습니다.

git diff --staged "스테이지"영역에있는 파일의 변경 사항 만 표시합니다.

git diff HEAD추적 된 파일의 모든 변경 사항을 표시합니다. 커밋을 위해 모든 변경 사항이 준비된 경우 두 명령 모두 동일하게 출력됩니다.


  • git diff Stage와 Working Directory의 차이점보기
  • git diff --staged HEAD와 Stage의 차이점보기
  • git diff HEAD HEAD와 Working Directory의 차이점보기

여기에 이미지 설명 입력
img src

여기에 이미지 설명 입력 여기에 이미지 설명 입력
img src

  • origin 복제 된 소스 저장소를 나타냅니다.
  • HEAD 현재 체크 아웃 된 분기의 마지막 커밋에 대한 참조입니다.
  • 스테이징 및 인덱스 모두 동일
  • 작업 디렉토리 에 단계되지 않은 변경 사항이 있지만 Git은 아직 버전 기록에 기록하지 않았습니다.
  • 단계적 변경은 다음 번에 git commit을 실행할 때 커밋 된 것으로 표시되었다는 점을 제외하면 비 단계적 변경과 매우 유사합니다.

다가오는 버전 (Git 2.3.4+, Q2 2015)을 통해 두 diff의 차이점을 더 쉽게 확인할 수 있습니다. git status -v -v

Michael J Gruber의 커밋 4055500참조하십시오 . 의 차이점을 잘 설명합니다 .mjggit diff HEADgit diff --staged

commit/ status: 색인 작업 트리 차이를 표시합니다.-v -v

git commit그리고 git status주어 졌을 때 긴 형식으로 HEAD와 인덱스 간의 DIFF을 보여줍니다 -v. 이렇게하면 커밋을 미리 볼 수 있습니다 .

또한 단계 화되지 않은 변경 사항이 있지만 차이점은없는 추적 된 파일도 나열합니다.

인덱스 차이 외에-v -v 인덱스와 작업 트리 간의 차이를 보여주는 ' '를 도입 하십시오 . 이를 통해 커밋에서 누락 될 수있는 단계 화되지 않은 변경 사항을 검토 할 수 있습니다 .HEAD

' -v -v' 의 경우 추가 헤더 행

Changes to be committed:
# and
Changes not staged for commit:

상태 부분에있는 것과 동일한 diff 앞에 삽입됩니다. 후자 앞에는 50 * " -"이 붙습니다.


실패한 병합 (예 : 병합되지 않은 경로)에서 실행하는 경우 두 개의 diff 명령에서 다른 출력을 얻을 수도 있습니다.

왜 이런 식으로 작동하는지 알 수 없었지만 여기에서 자세한 내용을 읽을 수 있습니다.

참조 URL : https://stackoverflow.com/questions/16562121/git-diff-head-vs-staged

반응형