0. Introduction

  • Chapter 11에서는 분석하고 디버깅하는 것에 대해 다룬다.
  • 이번 단원에서는 차이를 살펴보는 git diff 명령어에 대해 알아본다.

Git diff

working directory의 변경사항을 확인하는 명령어

  • git diff 명령어를 통해서 현재 파일들의 변경사항, staging area에 올라간 파일들의 변경사항, 브랜치 간의 변경사항, 커밋 간의 변경사항들 여러 관계 사이의 변경사항을 알 수 있다.

  • 먼저 실습하기 위한 변경 사항을 임의로 만들어본다.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    
    $ git diff
    # leopards.yaml
    diff --git a/leopards.yaml b/leopards.yaml
    index 9c8086a..eca1191 100644
    --- a/leopards.yaml
    +++ b/leopards.yaml
    @@ -13,5 +13,3 @@ members:
    - Dongho
    - Drax
    - Groot
    -  - Onepiece
    -  - No jam Thore
    
    # panthers.yaml
    diff --git a/panthers.yaml b/panthers.yaml
    index 8e2ee18..fb9738a 100644
    --- a/panthers.yaml
    +++ b/panthers.yaml
    @@ -11,3 +11,4 @@ members:
    - Freddie
    - Arachi
    - Hoki
    +  - Harus
    \ No newline at end of file
    
    # tigers.yaml
    diff --git a/tigers.yaml b/tigers.yaml
    index cd48481..c8ca3e0 100644
    --- a/tigers.yaml
    +++ b/tigers.yaml
    @@ -11,5 +11,3 @@ members:
    - George
    - Tyler
    - Kim
    -  - Gamora
    -  - Nebula
    
  • 파일명만 확인:

    • 변경사항 있는 파일의 이름들만 확인
    • git diff --name-only
    1
    2
    3
    4
    
    $ git diff --name-only
    leopards.yaml
    panthers.yaml
    tigers.yaml
    
  • 스테이지의 확인:

    • working directory에 있다가 staging area에 올라간 파일들의 변경사항을 확인하고자 할 때 사용
    • git diff --staged: git diff --caced도 이와 동일한 명령어
    1
    2
    3
    4
    
    $ git add .
    $ git diff --staged
    
    # git diff를 한 것과 동일한 결과가 나온다. 
    
  • 커밋간의 차이 확인

    • git diff (커밋 1) (커밋 2)
      • 또는 커밋 해시나 HEAD 번호로도 가능하다.
      • 현재 커밋과 비교하려면 이전 커밋만 입력한다.
    1
    2
    3
    4
    5
    6
    7
    8
    
    # 지난 번에 학습한 단축키 설정 명령어로 정한 git log 명령어를 사용한다.  
    # 그래서 두 개의 커밋을 골라보자.  
    $ git gg
    
    $ git diff 7a6d996 09994e8 
    
    # 또는 HEAD 번호를 사용해보자. 
    $ git diff HEAD~ HEAD~10
    
  • 그러면 git diff의 다른 옵션과 같이 사용해보자.

    1
    2
    3
    4
    5
    
    $ git diff --name-only HEAD~3 HEAD~7
    leopards.yaml
    panthers.yaml
    pumas.yaml
    tigers.yaml
    
  • 브랜치간의 차이 확인

    • git diff (브랜치 1) (브랜치 2)
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    $ git branch -a 
    citrus
    fruit
    * main
    root
    
    $ git diff main root
    diff --git a/onion b/onion
    deleted file mode 100644
    index e69de29..0000000
    

Reference