我有兩個不相關的(不共享任何祖先檢查)Git倉庫,一個是超級倉庫,它包含許多較小的項目(讓我們稱之爲倉庫A )。另一個只是一個小型項目的臨時本地Git倉庫(讓我們稱之爲倉庫B)。從圖形上看,它看起來像這樣如何將兩個單獨的不相關的Git倉庫合併成一個具有單一歷史時間線的倉庫
A0-B0-C0-D0-E0-F0-G0-HEAD (repo A)
A0-B0-C0-D0-E0-F0-G0-HEAD (remote/master bare repo pulled & pushed from repo A)
A1-B1-C1-D1-E1-HEAD (repo B)
理想情況下,我真的想回購乙合併到一個回購與一個單一的歷史時間表。所以這樣看來,我當初在回購A.圖形開工項目,這將是理想的最終結果
A0-A1-B1-B0-D1-C0-D0-E0-F0-G0-E1-H(from repo B)-HEAD (new repo A)
A0-A1-B1-B0-D1-C0-D0-E0-F0-G0-E1-H(from repo B)-HEAD (remote/master bare repo pulled & pushed from repo A)
我一直在做一些與子模塊和子樹(臨Git是一個相當不錯的書的閱讀方式),但他們似乎都迎合瞭解決方案,以維持兩個獨立的分支,子模塊能夠從上游拉動變化,而子樹略微減少頭痛。這兩種解決方案都需要額外的專用git命令來處理主和子樹/模塊分支之間的檢入和同步。這兩種解決方案都會導致多個時間線(使用--squash時,您甚至會得到3個單獨的時間軸)。
從SO最接近的解決方案似乎談論「graft」,但它是真的嗎?我們的目標是擁有一個統一的存儲庫,在這裏我可以推送/推入簽入,這樣就沒有更多的回購B了,最後只有回購A。
可能重複http://stackoverflow.com/questions/1425892/how-do-you-merge-two-git-repositories ) – 2012-03-20 05:31:56
@MichaelDurrant不,我拒絕子樹和子模塊解決方案,因爲情況不一樣 – Antony 2012-03-20 20:38:58