2015-12-02 177 views
1

我有兩個Git倉庫,A和B. Repo B正在退役。一些但不是全部的文件需要合併到A的一個分支中,包括他們的提交歷史記錄,一次可能只有一個文件夾。如果相關的話,那個分支最終將被用於針對A的主分支的github PR。如何將git倉庫的一部分遷移到另一個倉庫?

  1. 我該如何做到這一點?
  2. 如果在合併後但B退休前對B進行了更改,那麼如何更新A?
+0

爲什麼你需要知識庫的一部分的歷史?僅僅複製所有需要的文件不是更好嗎? – Jepessen

回答

0

有兩種情況,我知道你的情況是第二種情況,但我會在這裏留下,所以它可能對其他人有用。

案例1

情況1是當共享相同的起源(歷史記錄),因此一個可從其它拉,反之亦然。

對於問題1:

第一上拉回購

然後,合併一個的分公司沒有提交:

git checkout A_branch 
git merge B_branch --no-commit --no-ff 

你不從想將出現新的或新的變化一個的文件分支。刪除/丟棄它們。

然後只是提交。這樣你最終只需要從B得到想要的東西。

問題2:

再次做同樣的事情。

案例2

案例2時一個是完全不同的,他們的文件夾結構也不同,也就是說,沒有辦法,如果你簡單地複製一個文件會發生衝突回購文件夾到另一個(儘管這不是我們要做的)。

如果是這種情況,您可以使用git subtreeThis blog post可以提供更多的細節,但基本上你想要做的是,在回購一個

git subtree add --prefix ./destination_folder https://your_repo.com/B.git master

所以prefix指定回購目標文件夾,然後的地址其次是它的分支。

如果您需要安裝git subtree,請參閱該博客文章。

另一種解決這個問題的方法是使用,它結合了兩種回購創造了第三個,但我覺得你的情況適合用git subtree更好,所以我就離開了 URL here

+0

他們沒有共享相同的歷史,對不起。它們完全是獨立的回購協議,用於重疊目的;這個要點是擺脫一個,並將沒有重複工作的位移動到另一個位置。 – Andrew

+0

對!他們共享通用文件還是具有完全不同的文件夾結構? – Roberto

+0

完全不同。我要遷移的組件不存在於目標回購站(這就是爲什麼它們是被遷移的組件)。 – Andrew

相關問題