簡體   English   中英

Git引用合並到當前分支中的提交

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM