問題描述:
我在本地有兩個Git庫項目(D1=PC項目
包含通用項目
,D2=移動項目
也
包含通用項目
這兩個項目在同一目錄下
),
因為這兩個項目使用的通用項目是一樣的如數據庫訪問等
只有顯示層(view)不一樣而已,因為在之前沒有很好的規划而導致出現現在的問題,即如果D1里更改了通用項目的文件
那么D2需要先將D1通用項目的更改先合並過來然后再處理D2項目(防止出現差異導致出現問題),反之也是一樣,所以如果通用項目文件經常更新時,我就需要浪費大量的時間在合並這兩個Git倉庫上
所以要現在要將把這兩個庫項目合並到一個庫里以分支的方式(D1,D2)進行管理(開發PC項目時切換到D1分支,開發移動項目時切換到D2分支)
然后通用項目分別從D1,D2分支遷移出來到新分支Common
單獨
進行管理,然后D1和D2刪除通用項目文件
現在我如何將一個庫合並到另一個庫呢(提交記錄必須不能丟失)?經過幾天的測試終於解決
需要解決的問題:
把D2倉庫的所有內容和提交記錄合並到D1 倉庫中中,然后以分支的方式來管理D2項目
如何從D2倉庫和D1倉庫遷移出通用項目文件並保留提交記錄以后會單獨處理
目前的目錄結構F:|-- D1|-- D1.txt|-- .git|-- D2|-- D2.txt|-- .git我期望的 目錄結構F:|-- D1|-- D1.txt|-- .git|-- D2 合並D2倉庫文件和提交記錄到D1,以分支的方式管理|-- D2.txt
解決方案:
先看下D1和D2的提交記錄
D2倉庫的提交記錄

D1倉庫的提交記錄

使用remote加fetch的方法將D2的文件和提交合並到D1
- 切換到D1 Git倉庫
- 使用“git remote add d2 ../d2”將D2倉庫中所有信息以遠程倉庫的方式添加到D1的新建d2分支里
- 使用“git fetch --all”獲取d2遠程倉庫的所有信息,--a 代表獲取D2倉庫的所有分支和tag等信息(合並前請盡量保持一個分支,否則合並后提交記錄不忍直視)
- 切換到D1倉庫的主分支master
- 合並已添加的遠程分支d2到你需要的分支
- 處理合並后的分支,如刪除遠程分支不需要的分支,整理或精簡合並后的提交歷史,刪除D2項目文件等(GIT會將兩個倉庫的提交按時間的方式來進行合並)

使用pull直接進行合並
- 使用“git pull 遠程分支地址”直接合並,應該在新的分支里進行該操作,然后再進行合
- 處理合並后的分支,如刪除遠程分支不需要的分支,整理或精簡合並后的提交歷史,刪除D2項目文件等(GIT會將兩個倉庫的提交按時間的方式來進行合並)

以上兩種方式都可以將一個Git倉庫的文件和提交合並到另一個Git倉庫(Pull更簡單點)
因為對git並不是太了解所以並不太清楚這個之間的關系和區別
stackoverflow上有人說可以使用“git-fast-export”來實現,但搞了一二天愣是沒有實現
因為之前測試時沒有截圖所以也忘記錯誤是什么了,現在也懶的再測試一遍
參考: