在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Linux/ git Your branch and 'origin/dev' have di

git Your branch and 'origin/dev' have diverged

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

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

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

回答
編輯回答
刮刮樂(lè)

假設(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
這時(shí),你需要在 B 電腦上:

git pull --rebase origin dev

這個(gè)命令等同于:

git fetch origin
git rebase origin/dev

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


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

2018年8月8日 03:16