2015-06-18 296 views
2

我想合併2個git存儲庫,並且我想保留文件歷史記錄,但我不想保留提交歷史記錄。換句話說,我想隨時保持這些變化,但我不關心SHA校驗和。合併後,我不需要舊版本庫。組合2個git存儲庫,保留文件歷史記錄,不保存提交歷史記錄

以下問題的答案不幫我,因爲我總是用兩個根回購結束並分開提交歷史:

我想要做的,與Detach (move) subdirectory into separate Git repository完全相反,其中git subtree用於過濾所有影響子目錄中文件的提交。

我的兩個存儲庫有一些重疊的目錄結構,但沒有重疊文件(.gitignore.gitattributes除外),我想將它們合併到存儲庫的根目錄。

這兩個存儲庫的標籤都有一個略有不同的命名方案,但指向特定版本。例如,repoA的標籤爲A-1.0.0,A-1.0.1,repoB的標籤爲B-1.0.0,B-1.0.1。我並不關心標籤,不同分支或一個分支之間的提交,但是在標籤處必須有某個合併點。

唯一的想法,我能想出這麼遠,可能工作(我已經嘗試了所有我能與子樹找到併合並):

  1. 添加repoB作爲遠程
  2. 在repoA添加一個分支(mergeB)在標籤A-1.0.0
  3. 從repoB櫻桃挑提交到標記B-1.0.0到分支mergeB
  4. 結帳A-1.0.0
  5. 合併之前在歷史上的一個點分支合併B
  6. 櫻桃採摘從舊標籤A-1.0.0 + 1 repoA每次提交到老臉
  7. 分支再次
  8. 重複步驟3-7爲下一個標籤
  9. 當一切都做,做一個rebase(也許交互式)來清理東西

這聽起來像很多手動工作,有沒有更好的方法來做到這一點?

回答

-1

請嘗試以下步驟。您基本上是將文件從一個文件複製到另一個,然後從一個新的回購開始。或者,在第三個位置初始化並複製兩個舊的。

git clone repo1 a 
git clone repo2 b 
cp -r a b 
rm -rf a/.git 
rm -rf b 
cd a 
git init 

BTW,有轉換SNV到Git的,將保留歷史的工具,所以也許你應該調查使用它們。

+0

我想我不清楚。我想保留文件歷史記錄,但我不想保留提交散列。從svn到git的轉換進行得非常順利,這是由我的git回購包含標籤的事實所暗示的。事實上,他們來自svn並不相關並且令人困惑,所以我會編輯它。 –