Git HEAD~ / HEAD^ 차이

11 May 2016

Here is an illustration, by Jon Loeliger. Both commit nodes B and C are parents of commit node A. Parent commits are ordered left-to-right.

G   H   I   J
 \ /     \ /
  D   E   F
   \  |  / \
    \ | /   |
     \|/    |
      B     C
       \   /
        \ /
         A
A =      = A^0
B = A^   = A^1     = A~1
C = A^2  = A^2
D = A^^  = A^1^1   = A~2
E = B^2  = A^^2
F = B^3  = A^^3
G = A^^^ = A^1^1^1 = A~3
H = D^2  = B^^2    = A^^^2  = A~2^2
I = F^   = B^3^    = A^^3^
J = F^2  = B^3^2   = A^^3^2
  • HEAD^0 : HEAD. 자기 자신.
  • HEAD^1 : HEAD의 첫번째 부모
  • HEAD^2 : HEAD의 두번째 부모 (조부모가 아님! BFS처럼 너비 탐색)
  • HEAD~1 : HEAD의 첫번째 부모
  • HEAD~2 : = HEAD^1^1. HEAD의 첫번째 부모의 첫번째 부모 (DFS처럼 depth 탐색)

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

Mocks Aren't Stubs Git - 커밋 합치기 (Squash)