2016-09-20 134 views
1

我錯誤地將GitHub存儲庫(A)移動到新的Bitbucket存儲庫(B),方法是將A到B中的所有文件都添加到B中,這會丟失所有歷史記錄。我在B上做了一些工作(多次提交)並且意識到了我的錯誤,所以現在A包含了舊的歷史記錄直到某個時間點,而B包含了從那時起的新歷史記錄。我怎樣才能將A與B的歷史合併,以便B包含文件的完整歷史記錄?添加缺少的git歷史

P.S .:我猜主要的問題是B上的第一次提交與a不同,因爲沒有歷史它包含每個文件的全文。

庫中的

Commit 1: Create new File X 
Commit 2: File X 
+ Hello World 
Commit 3: File X 
+ This is a test 

庫B

Commit 1: Create new File X: 
+ Hello World 
+ This is a Test 
Commit 2 
+ This is a new line 

我想創建一個具有以下歷史上的新倉庫C:

Commit 1: Create new File X 
Commit 2: File X 
+ Hello World 
Commit 3: File X 
+ This is a test 
Commit 4: 
+ This is a new line 
+1

你應該能夠在庫B中運行'git format-patch .. ',然後使用'git-am'將結果系列的補丁應用到A. –

+1

或者,將B添加爲A的遠程,然後抓取,然後選擇第一個提交。 (這兩種方法假設B中的第一次提交與A中最後一次提交的狀態相匹配。) –

+0

@SvenMarnach格式化補丁和git工作完美,謝謝!你能否從評論中做出回答? –

回答

1
git init c 
cd c 
git remote add a ... 
git remote add b ... 
git branch -u a master 
git pull 
git checkout b/master -b new-master 
git rebase master 

也可能有助於先刪除從新主初始文件添加;或者它可能只會讓它變得更加困難,現在還不確定。