我有兩個Git倉庫,A和B. Repo B正在退役。一些但不是全部的文件需要合併到A的一個分支中,包括他們的提交歷史記錄,一次可能只有一個文件夾。如果相關的話,那個分支最終將被用於針對A的主分支的github PR。如何將git倉庫的一部分遷移到另一個倉庫?
- 我該如何做到這一點?
- 如果在合併後但B退休前對B進行了更改,那麼如何更新A?
我有兩個Git倉庫,A和B. Repo B正在退役。一些但不是全部的文件需要合併到A的一個分支中,包括他們的提交歷史記錄,一次可能只有一個文件夾。如果相關的話,那個分支最終將被用於針對A的主分支的github PR。如何將git倉庫的一部分遷移到另一個倉庫?
有兩種情況,我知道你的情況是第二種情況,但我會在這裏留下,所以它可能對其他人有用。
案例1
情況1是當甲和乙共享相同的起源(歷史記錄),因此一個可從其它拉,反之亦然。
對於問題1:
第一上拉回購乙成甲。
然後,合併乙到一個的分公司沒有提交:
git checkout A_branch
git merge B_branch --no-commit --no-ff
你不從乙想將出現新的或新的變化一個的文件分支。刪除/丟棄它們。
然後只是提交。這樣你最終只需要從B得到想要的東西。
問題2:
再次做同樣的事情。
案例2
案例2時一個和乙是完全不同的,他們的文件夾結構也不同,也就是說,沒有辦法,如果你簡單地複製一個文件會發生衝突回購文件夾到另一個(儘管這不是我們要做的)。
如果是這種情況,您可以使用git subtree
。 This blog post可以提供更多的細節,但基本上你想要做的是,在回購一個:
git subtree add --prefix ./destination_folder https://your_repo.com/B.git master
所以prefix
指定回購乙目標文件夾,然後乙的地址其次是它的分支。
如果您需要安裝git subtree
,請參閱該博客文章。
另一種解決這個問題的方法是使用,它結合了兩種回購創造了第三個,但我覺得你的情況適合用git subtree
更好,所以我就離開了 URL here。
爲什麼你需要知識庫的一部分的歷史?僅僅複製所有需要的文件不是更好嗎? – Jepessen