如何導入另一個 Git庫到現有的Git庫並保留提交記錄


問題描述:

我在本地有兩個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
  1. 切換到D1 Git倉庫
  2. 使用“git remote add d2 ../d2”將D2倉庫中所有信息以遠程倉庫的方式添加到D1的新建d2分支里
  3. 使用“git fetch --all”獲取d2遠程倉庫的所有信息,--a 代表獲取D2倉庫的所有分支和tag等信息(合並前請盡量保持一個分支,否則合並后提交記錄不忍直視)
  4. 切換到D1倉庫的主分支master
  5. 合並已添加的遠程分支d2到你需要的分支
  6. 處理合並后的分支,如刪除遠程分支不需要的分支,整理或精簡合並后的提交歷史,刪除D2項目文件等(GIT會將兩個倉庫的提交按時間的方式來進行合並)
      未標題-4 拷貝.jpg
使用pull直接進行合並
  1.  使用“git pull  遠程分支地址”直接合並,應該在新的分支里進行該操作,然后再進行合
  2. 處理合並后的分支,如刪除遠程分支不需要的分支,整理或精簡合並后的提交歷史,刪除D2項目文件等(GIT會將兩個倉庫的提交按時間的方式來進行合並)
    
 
以上兩種方式都可以將一個Git倉庫的文件和提交合並到另一個Git倉庫(Pull更簡單點)
因為對git並不是太了解所以並不太清楚這個之間的關系和區別
 
stackoverflow上有人說可以使用“git-fast-export”來實現,但搞了一二天愣是沒有實現
因為之前測試時沒有截圖所以也忘記錯誤是什么了,現在也懶的再測試一遍
 
參考:




免責聲明!

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



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