一周前我將分支B合并到我的分支C并在我的分支 C 上做了一些更新。
同時,我的同事對他的分支B做了一些更新。
我想在我的分支C上獲得他的更新。
我真的很困惑,因為他告訴我只是重新建立在他的分支上-但這會不斷洗掉我所有的新更新/添加的檔案。
我試圖再次合并這兩個分支 - 但不知何故我這次沒有得到他的更新。
我們的專案看起來像這樣:
Origin---o---o---o---o---o--- main
\
o---o---o---o---o---o---o---o---o B
\ \(merged) \(rebase here?)
o---o---o---o---o---o---o---o---o C
uj5u.com熱心網友回復:
變基很復雜,在這種情況下可能是個壞主意。讓我們采用您的拓撲:
o---o---o---o---C1---o---o---o---o friend
\ \
o---o---o---o---M---o---o---o me
要獲取您朋友的更改,正確且最簡單的做法是 (on me):
git merge friend
那會給這個:
o---o---o---o---C1---o---o---o---o friend
\ \ \
o---o---o---o---M---o---o---o---M2 me
盡管您的朋友說了什么,但此時您無法連貫地重新設定基準,因為me已經包含來自friend. 變基不能輕易解決這個問題;它將忽略合并提交,因此合并的效果將在您的分支中撤消。有一些方法可以解決這個問題,但在這里不值得討論。
然而,現在的關鍵問題是,如何擺脫由于糟糕的 rebase 和糟糕的合并而讓自己陷入的混亂局面。答案是使用reflog,這使得你在 Git 中所做的大部分事情都可以撤銷。當您說git reflog您將看到您的 HEAD 的所有先前狀態的串列。其中之一將是您開始 rebase 之前的狀態。git reset --hard <SHA>你想通過說(正如我在這里解釋的那樣)回到那個。現在做你應該做的合并,然后繼續。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/504891.html
標籤:混帐
