Git - Merge: refusing to merge unrelated histories


場景

我在本地有個代碼倉庫local-A,本地倉庫local-A已經和一個遠程倉庫remote-A關聯了。

接着我又在GitHub上新建了一個倉庫remote-B,我希望將本地倉庫local-A的本地dev分支push到這個新建的遠程庫remote-B。我的想法是這樣的:

  1. 在本地倉庫local-A里添加剛剛新建的遠程庫remote-B
  2. 檢出(check out)並切換到remote-B的master分支
  3. 將本地dev分支merge到當前的master分支
  4. 解決可能發生的沖突后,將改動全部commit並push到遠程庫remote-B的master分支上

接着當我做到第三步的時候,發現報錯如下:

Merge: refusing to merge unrelated histories

看到報錯,我又重新操作了一遍,依然是同樣的錯誤。記得以前我也做過類似的操作,但是卻沒有現在的問題,百度了下,發現可能是git升級之后造成的。

解決方案

因為兩個倉庫是不同的項目(本地倉庫已經跟蹤了另外一個遠程庫了),git默認不允許不相干的項目進行push等操作。如果想要進行這些操作,就需要加入--allow-unrelated-histories參數才可以合並兩個不同的項目:

git merge --squash dev --allow-unrelated-histories

這句命令表示將dev分支合並到當前分支,這里的兩個本地分支各自追蹤不同的遠程庫,需要加入--allow-unrelated-histories參數才能夠完成合並操作而不報錯,至於--squash參數是為了壓縮dev分支原本的commit歷史,可以將原本所有的commit歷史合成一個commit,以避免當前分支在合並之后摻入了其他項目的commit歷史。

參考鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM