問題描述:
我在本地有兩個Git庫項目(D1=PC項目 包含通用項目,D2=移動項目也包含通用項目這兩個項目在同一目錄下)剥槐,因為這兩個項目使用的通用項目是一樣的如數(shù)據(jù)庫訪問等只有顯示層(view)不一樣而已恶复,因為在之前沒有很好的規(guī)劃而導致出現(xiàn)現(xiàn)在的問題惨恭,即如果D1里更改了通用項目的文件,那么D2需要先將D1通用項目的更改先合并過來然后再處理D2項目(防止出現(xiàn)差異導致出現(xiàn)問題)锋拖,反之也是一樣,所以如果通用項目文件經(jīng)常更新時,我就需要浪費大量的時間在合并這兩個Git倉庫上逻澳。
所以要現(xiàn)在要將把這兩個庫項目合并到一個庫里以分支的方式(D1,D2)進行管理(開發(fā)PC項目時切換到D1分支,開發(fā)移動項目時切換到D2分支)巷燥。
然后通用項目分別從D1,D2分支遷移出來到新分支Common單獨進行管理赡盘,然后D1和D2刪除通用項目文件。
現(xiàn)在我如何將一個庫合并到另一個庫呢(提交記錄必須不能丟失)缰揪?經(jīng)過幾天的測試終于解決
需要解決的問題:
- 把D2倉庫的所有內(nèi)容和提交記錄合并到 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會將兩個倉庫的提交按時間的方式來進行合并)
未標題-4 拷貝.jpg
- 使用pull直接進行合并
- 使用“git pull 遠程分支地址”直接合并定硝,應該在新的分支里進行該操作,然后再進行合
- 處理合并后的分支,如刪除遠程分支不需要的分支毫目,整理或精簡合并后的提交歷史,刪除D2項目文件等(GIT會將兩個倉庫的提交按時間的方式來進行合并)
image
- 以上兩種方式都可以將一個Git倉庫的文件和提交合并到另一個Git倉庫(Pull更簡單點)
因為對git并不是太了解所以并不太清楚這個之間的關系和區(qū)別
stackoverflow上有人說可以使用“git-fast-export”來實現(xiàn)蔬啡,但搞了一二天愣是沒有實現(xiàn)
因為之前測試時沒有截圖所以也忘記錯誤是什么了,現(xiàn)在也懶的再測試一遍