Git命令中波浪號~與脫字元^的區別
0.前言
波浪號~
,英文名叫 tilde。脫字元^
,英文名叫caret。
這兩種符號常見於git reset
的情景,簡單的項目結構和操作一般不會涉及到兩者之間的區別,似乎用哪個都可以。如果遇到比較繁雜的提交歷史,可能就要好好體驗一下二者更深層的含義。
1.兩種符號的異同和轉換
1.1 ~
表示當前分支所屬提交時間線上的某個提交
只適用於當前分支所在的線性的歷史提交。
如果提交歷史為
A---B---C---D
當前所在點為HEAD=D
,那麼
C=HEAD~1
B=HEAD~2
A=HEAD~3
1.2 ^
表示與分支合併操作相關時父分支所屬提交的編號標識
如果提交歷史如下所示,當前所在點為HEAD=D
,那麼
E---F
/ \
A---B---C---D
/
G---H
D=HEAD
C=D^1
H=D^2
G=D^2^1=H^1
B=C^1
F=C^2=D^^2
E=F^1
1.3 兩者之間的轉換
仍然以1.2節中的例子為準,下面是兩種符號之間的聯繫和轉換。
D=HEAD
C=D~1=D^1=D^
B=D~2
A=D~3
# D由H和C合併產生,C是當前分支中的父節點,H是屬於另一個分支的第二個父節點
C=D^1
H=D^2
G=D^2^1=H^1
# C由B和F合併產生,B是C的當前分支所在時間線中的父節點
# F是C的第二個父節點,屬於另一個分支
B=C^1
F=C^2=D^^2=D~1^2
E=F^1
A=B^1=B~1=C^1^1=C~1^1=D^1^1^1=D~3
(全文完)
參考資料
[1] What’s the difference between HEAD^ and HEAD~ in Git?
本文作者 :phillee
發表日期 :2022年01月19日
本文鏈接 ://www.cnblogs.com/phillee/p/15821555.html
版權聲明 :自由轉載-非商用-非衍生-保持署名(創意共享3.0許可協議/CC BY-NC-SA 3.0)。轉載請註明出處!
限於本人水平,如果文章和程式碼有表述不當之處,還請不吝賜教。
感謝您的支援
微信支付