合并拉取请求

31

有人向我的GitHub存储库提交了一组拉取请求。不幸的是,他们分别为每个文件提交了多个拉取请求,而不是一次性提交所有文件的拉取请求。

在请求他将它们合并为一个后,由于没有得到任何回应,我现在正在尝试在Git Bash中自己将这些拉取请求合并在一起,但没有什么进展。我很喜欢使用GitHub程序中的合并按钮和提交功能,但更深入地了解git shell就少了。如果有人能够介绍一下如何将这些拉取请求合并在一起(它们中没有任何冲突),那将不胜感激。

1个回答

38
假设你有 3 个拉取请求 A、B 和 C,它们位于三个分支 bA、bB 和 bC 上。而你的主分支是 master。
首先在不合并的情况下将他的所有分支获取到你的本地仓库中。 git fetch his-repo 这时你的仓库可能有四个分支:master, bA, bB, bC 我将从 master 创建一个名为 f-merge-his-repo 的分支。 git checkout master 它确保 f-merge-his-repo 是从 master 分支创建的。 git checkout -b f-merge-his-repo 这将创建分支 f-merge-his-repo 并切换到该分支。
现在你正在使用 f-merge-his-repo 分支,使用以下命令: git merge bA git merge bB git merge bC 如果有冲突,则应解决它(手动或使用合并工具),但由于你说没有冲突,因此我们认为bA、bB 和 bC现在都在f-merge-his-repo
然后,只需将 f-merge-his-repo 简单地合并到你的主分支中
首先切换到主分支。 git checkout master 然后将 f-merge-his-repo 合并到主分支中 git merge f-merge-his-repo 或者,如果你喜欢不快进合并 git merge --no-ff f-merge-his-repo 最后删除这些分支。 git branch -d bA git branch -d bB git branch -d bC git branch -d f-merge-his-repo

你应该真正看一看 pro-git。这是一本简单的书,向你展示日常工作中使用git所需的一切。相信我,一旦你习惯了git bash,你会发现所有这些git GUI都是很无趣的(除了查看日志,我使用gitk来查看和分析日志)。

最后的提示:

记住git mergegit rebase的好方法是:

合并是将另一个分支合并到您当前的分支(当然,您可以命名两个分支,但默认语法是将分支合并到您当前的分支)

所以你应该总是切换到主分支并合并其他分支

git checkout master

git merge their-branch --no-ffgit merge their-branch

而rebase则是在另一个分支(通常是主分支)上重新定义您当前的分支

git checkout feature-branch

git rebase master


好的,我找不到他创建的任何分支。我唯一的假设是他必须逐个编辑每个文件来创建拉取请求 - 而不是使用分支。我尝试了基于更多研究和查看那本书后挑选提交的方法,但我得到的只是“fatal: bad object xxxxx”,其中“xxxxx”是提交编号。除了手动完成所有操作之外,还有其他想法吗? - George Wilson
你的意思是他先修改了a.c并创建了一个拉取请求,然后基于那个版本他又修改了b.c并创建了另一个拉取请求? - shengy
不,我的意思是他编辑了4个单独的文件。而不是创建一个拉取请求。或者至少我找不到他尝试合并的任何分支。如果有帮助的话,这里是这4个拉取请求 https://github.com/wilsonge/shoutbox/pulls 。我想接受它们所有人 - 但是在一个合并中 - 这样我可以一次性撤销它们,如果需要/有一个更完整的日志等等。 - George Wilson
我认为他的分支是 patch-11 patch-12 patch-13 patch-14,你可以获取它们并将其合并到你自己新创建的分支中,然后再将该分支合并到主分支。如果你只想在你的分支上有一个单独的提交,你可以尝试查看交互式变基,即 git rebase -i - shengy
我尝试了获取它们所有的信息,但一直出现致命错误。 我已经放弃并决定手动完成,因为从长远来看这样更快。 希望不会在不久的将来再收到像那样愚蠢的拉取请求!! 非常感谢您的帮助! - George Wilson
1
很抱歉我没有真正地帮到你,但我强烈建议你花大约半天的时间阅读pro-git,之后你就会知道在日常使用git(bash)时所需的一切。 - shengy

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