본문 바로가기
utils/git and github

[Git] git diff

by ds31x 2024. 5. 20.

git diff

git diff 명령어를 사용하면 어떤 라인이 추가되었는지, 삭제되었는지, 수정되었는지 등을 알 수 있음.

  • Git에서 두 버전의 파일을 비교하여 차이를 보여주는 명령어
  • 변경된 내용이 어떤 것인지를 보여줌.
  • 수정이력을 commit 단위로 비교하여 보여줌.

usage

  • 옵션 없이 사용"Working tree" "Stage" 에 있는 같은 파일의 차이점 확인.
    • Unstaged 상태인 파일들의 수정사항을 보여줌.
  • --staged 옵션을 사용할 경우, "Stage" "repository (HEAD)" 에 있는 같은 파일의 차이점 확인.
  • git diff HEAD 로 사용시, "working tree와 Stage를 포함한 것" 최신 commit( HEAD 가 가르킴)와의 차이점을 확인.

보다 자세한 사용법은 아래의 Summary 참고할 것.


아래 예제는 다음 글의 예제에서 이어짐: 2024.05.20 - [utils/git and github] - [Git] commit


Example

Working tree에서 first_file.txt에 4번째 라인에 4 라는 글자를 추가 후 git status로 확인하면 다음과 같음.

  • 여기서 new_file.txt가 modified 됨을 확인할 수 있음.
  • 어떤 부분이 변경되었는지 (working tree와 stage의 차이점 확인)는 git diff로 확인 가능함.

  • +4b/new_file.txt에 추가된 부분을 의미함.

이 후, working tree에 추가된 부분을 version 관리에 추가하려면 git add, git commit을 사용.

  • 여러 파일들을 수정하는 작업을 했는데, 문제가 발생하여 소스가 정상 동작하지 않을 경우,
    지금까지 이루어진 변경사항을 취소하고 최신 version으로 되돌리는 작업 수행.
  • Git 23.0 이전에는 이를 위해 git checkout 을 사용하였으나
  • 현재 working tree내용을 버리려면, git restore을 사용.
  • 23.0부터 checkout은 branch를 생성하거나 branch로 이동하는 경우에만 사용되고, 변경내용 취소하는 기능은 git restore로 분리됨.

Summary

git diff는 branch간의 차이점이나, 현재 working tree와 특정 branch 와의 차이 등을 보는 데에도 사용됨.


1. 현재 작업 디렉토리의 변경 사항 확인

working directory와 stage (or index) 사이의 차이를 보여줍니다.

git diff

2. stage 영역과 최신 commit 사이의 변경 사항 확인

스테이징된 파일들과 최신 커밋 사이의 차이를 보여줍니다.

git diff --staged

 

또는

git diff --cached

3. 특정 파일의 변경 사항 확인

특정 파일의 변경 사항만 보고 싶을 때 사용합니다.

git diff 파일명

4. 두 커밋 사이의 변경 사항 확인

두 커밋 사이의 변경 사항을 비교합니다.

git diff 커밋1 커밋2
  • hash 값으로 커밋1 과 커밋2를 지정.
  • git log를 통해 확인 가능한 commit id (SHA1 hash value)가 hash값임.

아래와 같이 상대참조 (HEAD 기준)를 사용할 수 있음

git diff HEAD~1 HEAD  
  • 위 명령어는 바로 이전 커밋과 현재 커밋 사이의 변경 사항을 비교.

5. 브랜치 간의 변경 사항 확인

두 브랜치 사이의 차이를 비교.

git diff 브랜치1 브랜치2

추가 옵션

  • --name-only: 변경된 파일 이름만 보여줍니다.
  • --name-status: 변경된 파일 이름과 변경 상태(추가, 수정, 삭제)를 보여줍니다.
  • --stat: 변경된 파일의 통계 정보(몇 줄이 추가되었고, 몇 줄이 삭제되었는지)를 보여줍니다.
  • -p: 패치 형식으로 변경 사항을 보여줍니다.

이 외에도 다양한 옵션들이 있으니, git diff --help 명령어를 사용하여 추가적인 옵션을 확인해 보는 걸 권함.

'utils > git and github' 카테고리의 다른 글

[Git] rm  (0) 2024.05.21
[Git] git 설치 후 우선 해줘야 하는 작업들  (0) 2024.05.21
[Git] Git Summary (작성중)  (0) 2024.05.20
[Git] commit —amend  (0) 2024.05.20
[Git] commit  (0) 2024.05.20