2012-04-27 82 views
6

我有一箇舊的Git回購,叫它app。然後,一年後,我想從頭開始重建應用程序,所以我做了一個新的回購,叫它app-2連接兩個Git存儲庫的歷史?

現在,我意識到我應該只是做的,而不是一個新的回購新的分支機構或東西,因爲我想對app頂部移動的app-2歷史,然後擺脫app-2使app現在有所有的歷史記錄app + app-2

這可能嗎?

UPDATE:

我試圖在app刪除所有文件(除.git目錄),並作出承諾「正在重置」的app回購。然後:

cd ~/Projects/app-2 
git format-patch --stdout --root master > ../app/app-2-patches.txt 
cd ../app 
git am app-2-patches.txt 

但是,我在app-2分支的地方發生衝突。

是否可以在保留app-2歷史的分支結構的同時應用app-2的提交?

+0

是否有一個原因,你需要他們在同一個回購?如果是這樣,是否有一個原因必須在同一個分支?爲什麼不只有一個單獨的分支來存儲舊版本的歷史記錄,然後讓你的當前新應用成爲主分支? – Amber 2012-04-27 17:17:59

回答

2

你可以使用git的移植點。首先從遠程將app的歷史記錄轉換爲app-2,然後按照說明進行操作。在this answer

+0

具體來說:您可以使用'git filter-branch'將嫁接歷史轉化爲「真實」歷史,然後擺脫嫁接點。請記住,這將改變你所有的提交id! – duskwuff 2012-04-27 18:04:30

0

第一步是在一個回購中獲得兩個應用程序;第二步是以合理的方式合併它們。

對於一步一個我想說推都在倉庫分行的APP-2在應用程序存儲庫分支:

$ cd /path/to/app-2 
$ git remote add app-repo /path/to/app 
$ git push app-repo master:app-2-master  # master in app-2 goes to app-2-master in app repo 
# repeat for other branches in app-2 

現在你有它的所有分支機構和所有的應用程序應用程序庫比-2分支。假設您(想要)將app-2視爲從應用派生而來。然後,你變基所有應用-2對應用具有:

$ cd /path/to/app 
$ git checkout app-2-master 
$ git rebase master 

這可能涉及大量的工作來解決衝突,但混帳也將被做工作的負荷爲您服務。

+1

nit:'git add remote'應該是'git remote add' – 2014-09-21 14:11:49

相關問題