匯入另一個 Git庫到現有的Git庫並保留提交記錄
提取出的主要步驟如下:
1 切換到要合併到的倉庫
2 git remote add 倉庫名 被合併倉庫路徑
3 git fetch --all
4 git merge 倉庫名/被合併倉庫想合併的分支
問題描述:
我在本地有兩個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遠端倉庫的所有資訊
- 切換到D1倉庫的主分支master
- 合併已新增的遠端分支d2到你需要的分支
- 處理合並後的分支,如刪除遠端分支不需要的分支,整理或精簡合併後的提交歷史,刪除D2專案檔案等(GIT會將兩個倉庫的提交按時間的方式來進行合併)
- 使用“git pull 遠端分支地址”直接合並,應該在新的分支裡進行該操作,然後再進行合
- 處理合並後的分支,如刪除遠端分支不需要的分支,整理或精簡合併後的提交歷史,刪除D2專案檔案等(GIT會將兩個倉庫的提交按時間的方式來進行合併)
以上兩種方式都可以將一個Git倉庫的檔案和提交合併到另一個Git倉庫(Pull更簡單點)
因為對git並不是太瞭解所以並不太清楚這個之間的關係和區別, 有知道的大神或有其他解決方案請告知不勝感激
stackoverflow上有人說可以使用“git-fast-export”來實現,但搞了一二天愣是沒有實現
因為之前測試時沒有截圖所以也忘記錯誤是什麼了,現在也懶的再測試一遍
參考: