場景:有一個系統基礎腳手架,很多系統都在這個腳手架基礎上開發,但是有時候這個腳手架也會更新迭代,這個時候需要把腳手架合並到已經開發系統中來,而且腳手架和現有系統不再一個Git倉庫中,這時候需要合並兩個不同的倉庫的代碼。
第一步. 下載需要合並的分支
要把需要合並的分支代碼 clone
到本地。
$ git clone https://gitee.com/alingfly/ASF_Test.git
第二步. 添加需要合並遠程倉庫
$ git remote add base https://github.com/AClumsy/ASF.git
將 base
作為遠程倉庫,添加到 本地倉庫(origin)
中,設置別名為 base
(自定義,這里我是為了方便區分倉庫名)
第三步. 把base
遠程倉庫中數據抓取到本倉庫
$ git fetch base
From https://github.com/AClumsy/ASF
* [new branch] master -> base/master
第四步. checkount
切換到base
分支上,命名為 asf
$ git checkout -b asf base/master
Switched to a new branch 'asf'
Branch 'asf' set up to track remote branch 'master' from 'base'.
//查看一下所有分支
$ git branch
* asf
asf_test
由於我們需要把asf
分支合並到asf_test
分支中去,我們在切換到asf_test
分支。
$ git checkout asf_test
第五步. 合並
$ git merge asf
合並完成之后會出現很多沖突,需要在本地代碼中解決沖突,然后在提交到ASF_Test
中去。
$ git push origin asf_test //上傳到遠程庫
fatal: refusing to merge unrelated histories 錯誤
在執行 merge
合並的時候出現 fatal: refusing to merge unrelated histories
錯誤。這個錯誤可能會在 git pull
或者 git push
中都有可能會遇到,這是因為兩個分支沒有取得關系。
解決方案
在操作命令后面加 --allow-unrelated-histories
$ git merge asf --allow-unrelated-histories
總結:(引用學習文章的總結)
大致思路是偽造遠程的asf
倉庫為asf_test
的一個分支,然后合並進來;
若是文件有沖突、或要建立子目錄,建議在asf
中先解決,再進行如上操作。
作者:阿凌
出處:https://www.cnblogs.com/lfzm/p/10681412.html
【版權聲明】 作品來自於長沙.NET技術社區成員【阿凌】,有興趣了解長沙.NET技術社區詳情,請關注公眾號【DotNET技術圈】,作品版權歸作者和博客園共有,作品采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。