[英]How to get the new changes from another branch with git
一周前我將分支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
變基很復雜,在這種情況下可能是個壞主意。 讓我們采用您的拓撲:
o---o---o---o---C1---o---o---o---o friend
\ \
o---o---o---o---M---o---o---o me
要獲取您朋友的更改,正確且最簡單的做法是(在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
的合並提交(M)。 變基不能輕易解決這個問題; 它將忽略合並提交,因此合並的效果將在您的分支中撤消。 有一些方法可以解決這個問題,但在這里不值得討論。
然而,現在的關鍵問題是,如何擺脫由於糟糕的 rebase 和糟糕的合並而讓自己陷入的混亂局面。 答案是使用reflog ,這使得您在 Git 中所做的大部分工作都無法撤消。 當您說git reflog
時,您將看到 HEAD 的所有先前狀態的列表。 其中之一將是 state就在您開始 rebase 之前。 您想通過說git reset --hard <SHA>
將 go 回到那個狀態(正如我在這里解釋的那樣)。 現在做你應該做的合並,然后繼續。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.