2015-10-15 54 views
0

我有兩個項目(A和B)。 A使用C#,而B使用Java。Git合併兩個完全不同項目的獨立存儲庫

兩者都在獨立的git歷史。

是否有可能將這兩個獨立的git存儲庫合併爲一個?

的最終結果將是一個混帳存儲庫包含項目的文件夾命名爲A和B的文件夾命名爲B.

的歷史,謝謝!

+0

解決方案已經提供。鏈接在這裏。 Tipton

回答

0

谷歌搜索後,下方後回答的問題準確:

http://nuclearsquid.com/writings/subtree-merging-and-you/

子樹合併和你2008年10月4日·3分鐘閱讀如果你使用Git的 ,你可能意識到子模塊。當你想要 集成並跟蹤另一個Git倉庫時,它們非常有用。但有 是另外兩種可供選擇的選項。

第一個是簡單地合併另一個存儲庫。這個工作正常 只要沒有衝突的文件,但有機會 已經或將在未來,這使得這個選項不太 有用。

這是子樹合併策略的用途。它允許您將另一個存儲庫(我們稱之爲「項目B」)合併到您自己的 中,但將其合併到其自己的子目錄中。首次設置 一切需要花費一點努力,但在此之後,從其他 存儲庫中提取所有需要更新的內容。

下面介紹如何設置它。首先你需要添加項目B作爲遠程:

$ git remote add -f projectb/path/to/other/repo(-f-Flag告訴 Git在添加後立即獲取提交)。

然後你準備子樹合併:

$ git的合併-s我們--no提交項目B /主這告訴GIT中 準備合併提交,但實際上沒有犯呢。通過指定'我們的'合併策略的 ,我們告訴Git我們希望合併的結果成爲當前的HEAD,不管怎樣。

接下來我們實際添加項目B到我們自己的倉庫:

$的git讀樹前綴=供應商/項目B/-u項目B /主讀樹 讀取其他存儲庫的主樹進入索引, 將其存儲在前綴(在本例中爲 vendor/projectb /)中給出的路徑下。請注意,前綴 選項的路徑必須以斜槓結尾,並且在執行 此命令時必須爲空。 -u-flag使讀取樹也用新添加的文件更新我們的工作 拷貝。

現在,所有剩下的就是提交我們的合併:

$ git的承諾-m「合併項目B爲供應商/項目B /」就是這樣。 未來的更新只需要從項目B與子樹 併購戰略上拉規定:

$ git的拉-s子樹項目B掌握應該指出的是,這 策略也有一些缺點相比,使用子模塊:

任何人誰克隆你的回購也將獲得合併後的資源庫, 它們是否想要或不製作和commiting改變使用子模塊時,也給項目B 比較容易,如果從項目B有人想 合併這些更改回他們自己,它會變得複雜。 這不是不可能,但可能需要高級Git知識。無論如何,這樣做也會將您的 項目歷史連接到項目B,這可能不合意。

希望它有幫助。

謝謝!