[英]Git refer to commit that was merged into the current branch
這是我的git repo的狀態(u1表示我,u2是其他人)
C1(U1)->C2(U2)->C3(U2)->C4(U2)->C5(U2)->C6(U2)->C7(U2)->C8(U2)->C9(U2)->C10(U1)
因此,只有C1是我的提交,而C10實際上是一個沖突合並提交(當我從分叉存儲庫中提取更改時)。
我當前的HEAD在C10。 我希望它在C9。
當我執行git reset --hard HEAD~1
我看到它實際上恢復為C1(我在歷史上的最后一次提交),而不是總體上的最后一次提交。
如何還原為C9?
您應該編寫git reset --hard HEAD^2
,這意味着要訪問合並提交的第二個父級(這是U2的父級)
參見git-revisions
git help revisions
〜,例如master〜3
版本參數的后綴〜表示第
<n>
代的提交對象
命名提交對象的祖先, 僅跟隨第一個parent 。 即<rev>~3
是
等效於<rev>^^^
等效於<rev>^1^1^1
。 有關此表格用法的說明,請參見下文。
在合並請求的情況下,第一個父級是合並分支的提交(在這里您將C9合並到C1中),因此C1是第一個父級,而C9是第二個父級。
您可以使用commit^n
訪問提交的nth
父級
所以如果你這樣做
git reset --hard HEAD^2
它應該工作
有關^
符號的其他信息:
<rev>
^,例如HEAD ^,v1.5.1 ^ 0修訂參數的后綴^表示該提交對象的第一個父對象。 ^
<n>
表示
第<n>
個父對象(即<rev>
^等效於<rev>
^ 1)。 作為特殊規則,<rev>
^ 0表示提交本身,並且當<rev>
是引用提交對象的標記對象的對象名稱時使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.