我有两个Git回购,A和B.回购B正在退休。其中一些(但不是全部)文件需要合并到A的分支中,包括它们的提交历史记录,一次可能是一个文件夹。该分支最终将用于针对A的主分支的github PR,如果它是相关的。
答案 0 :(得分:0)
有两种情况,我知道你的情况是第二种,但我会留在这里,所以它可能对其他人有用。
案例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
案例2是当 A 和 B 完全不同时,它们在文件夹结构上也有所不同,也就是说,如果你只是简单地复制文件就不会碰撞一个repo文件夹到另一个(虽然这不是我们要做的)。
如果是这种情况,您可以使用git subtree
。 This blog post可以提供更多详细信息,但基本上您要做的是,在repo A :
git subtree add --prefix ./destination_folder https://your_repo.com/B.git master
所以prefix
指定repo B 的目标文件夹,然后是 B 的地址,后跟其分支。
如果您需要安装git subtree
,请参阅该博文。
此问题的另一个解决方案是使用git-stitch-repo
,它结合了两个repos创建第三个,但我认为你的情况更适合git subtree
,所以我只留下{{1网址here。