将Git拉取请求从一个存储库移动到另一个存储库

15

我有一个名为ONE的代码库,里面有一些工作内容。有一个名为pull-request的开放式拉取请求,我想把它与所有提交一起移动到另一个名为TWO的代码库中。

Repository "ONE" c1_c2_c3_c4_c10_c11_c12_c13...
                            \
     branch "pull-request"   \_c5_c6_c7_c8_c9



Repository "TWO" _____________________________
                                              \
     branch "pull-request-from-repository-ONE" \_c5_c6_c7_c8_c9

这可能吗?如果是,怎么实现?

3个回答

9
感谢Steve BennettsCodeWizards的回答,我能够通过结合两个回答的方法使其正常工作,就像这样:

在第二个仓库中

git remote add ONE  https://...
git fetch ONE pull-request

git checkout -b pull-request-from-repository-ONE
git cherry-pick [sha-commit-hash]

注意,我在尝试挑选一系列提交时搞砸了,因为我的拉取请求分支已经包含了合并... 所以无论如何,挑选单个提交似乎是有效的。

这里的[sha-commit-hash]确切指的是什么?它是指位于ONE存储库上PR顶端的提交吗? - stdout
1
@stdout 抱歉(晚了8个月)[sha-commit-hash],如答案中所提到的,我正在选择单个提交。因此,在响应的前两个步骤之后,我能够从分支pull-request中选择单个提交并将其合并到分支pull-request-from-repository-ONE中。 - caramba

3
假设这个“pull request”是在类似Github这样的服务上,你只需要像在本地处理其他分支一样处理它:
git remote add repoone https://....
git fetch repoone
git merge pull-request

谢谢Steve。我看到这个解决方案可以解决问题,但现在我把整个Repository One放到了Repository Two中,这不是我真正想要的。 - caramba
2
抱歉,我误解了这张图表 - 我一直以为 Repo Two 是 Repo One 的一个分支。在这种情况下,我倾向于像你所做的那样挑选单个提交。 - Steve Bennett

2

是的,你可以采用一种变通的方法:

将这两个远程仓库添加到你的代码库中。然后使用 git cherry-pick 命令将所需提交内容复制到第二个代码库中,并像平常一样创建一个新的拉取请求。

重点在于,在GIT中,你可以有多个远程仓库,提交内容可以被"添加"到任何一个分支中。

如果你使用GitHub,拉取请求会被本地存储到你的代码库中,因此你可以立即合并它们。


在本地检出GitHub拉取请求

https://gist.github.com/piscisaureus/3342247


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接