鍍金池/ 問答/Linux/ git Your branch and 'origin/dev' have di

git Your branch and 'origin/dev' have diverged

執(zhí)行git push時出現(xiàn)了以下錯誤:
Your branch and 'origin/dev' have diverged,and have 1 and 2 different commits each, respectively.

我在兩臺電腦上工作,電腦A和B初始都是up-to-date,之后我先在A中commit并push了幾次,然后我現(xiàn)在在電腦B中從初始狀態(tài)編寫,然后試圖在commit之后push,出現(xiàn)了上述問題(使用同一個本地和云分支)。

現(xiàn)在我想:合并這二者,顯示不同,然后重新commit并push

回答
編輯回答
刮刮樂

假設(shè),遠(yuǎn)程上的 commit 是 A -> B
你在 A 電腦上 commit 和 push 之后,遠(yuǎn)程變成了 A -> B -> C -> D
現(xiàn)在,B 電腦上還是 A -> B。然后你 commit 了,那么 B 電腦上就是 A -> B -> E

所以,你需要的是把 B 電腦上的歷史線變成 A -> B -> C -> D -> E
這時,你需要在 B 電腦上:

git pull --rebase origin dev

這個命令等同于:

git fetch origin
git rebase origin/dev

執(zhí)行之后,B 電腦上的歷史線就會變成 A -> B -> C -> D -> E,然后你就可以 push


多說一句,之所以顯示上面的“錯誤”,是因為 A -> B -> C -> DA -> B -> E 有一個共同的祖先 B,你在本地多了一個 commit E,遠(yuǎn)程多了兩個 commits CD。這個時候如果你要在 A -> B -> E 的 branch 上 push,git 猜不出到底想保留 CD,還是只要 E,還是都要,就會出現(xiàn)上面的提示。

2018年8月8日 03:16