2017年9月28日 星期四

[git] HEAD~ 和 HEAD^ 的差別

先推個不錯的網站: http://learngitbranching.js.org/

git-rev-parse documentation 裡面有詳細的說明


裡面有一張圖(by Jon Loeliger),parent由左而右看,然後B和C是A的parent commit

G   H   I   J   (H被merged到G上,產生D commit) (J被merged到I上,產生F commit)
 \ /     \ /
  D   E   F    (E,F被merged到D上,產生B commit)
   \  |  / \
    \ | /   |
     \|/    |
      B     C   (C被merged到B上, 產生A commit)
       \   /
        \ /
         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
由上面的例子可以知道:

^用來左右移動,~用來上下移動(限自己的parent commit)
^1 可以省略成^
~1 可以省略成~

~只適用在自己的那條parent,如果要轉到其他的parent,必須使用^轉過去

所以有 ^ 和 ~ 有很多種寫法,看自己習慣怎樣就怎樣囉!



沒有留言:

張貼留言