[英]How do I migrate part of a git repo into another repo?
我有兩個Git存儲庫,即A和B。存儲庫B已退休。 它的一些(但不是全部)文件需要合並到A的分支中,包括它們的提交歷史記錄,可能一次合並一個文件夾。 如果相關,該分支最終將用於A的master分支的github PR。
有兩種情況,我知道您的情況是第二種,但是我將兩者都留在這里,這樣可能會對其他人有用。
情況1
情況1是當A和B共享相同的原點(歷史)時,因此一個人可以從另一個中拉出,反之亦然。
對於問題1:
首先將回購B放入A中 。
然后,將B合並到A的分支中,而無需提交:
git checkout A_branch
git merge B_branch --no-commit --no-ff
B不需要的文件將顯示為A分支的新文件或新更改。 刪除/丟棄它們。
然后提交。 這樣,您最終只能得到B想要的東西。
對於問題2:
再次做同樣的事情。
情況二
情況2是A和B完全不同,它們的文件夾結構也不同,也就是說,如果您只是將一個repo文件夾復制到另一個repo文件夾,則文件不會沖突(盡管這不是我們要做的) 。
如果是這種情況,可以使用git subtree
。 這篇博客文章可以提供更多詳細信息,但是基本上,您想做的是在回購A上 :
git subtree add --prefix ./destination_folder https://your_repo.com/B.git master
因此, prefix
指定存儲庫B的目標文件夾,然后是B的地址,然后是其分支。
如果需要安裝git subtree
,請參考該博客文章。
這個問題的另一個解決方案是使用git-stitch-repo
,其結合了兩種回購創造了第三個,但我覺得你的情況適合用更好git subtree
,所以我就離開這個git-stitch-repo
網址在這里 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.