24

有人向我在 github 上的存储库提交了一组拉取请求。不幸的是,他们已经在多个拉取请求中完成了此操作(每个文件一个),而不是一次性提交所有文件的所有拉取请求。

在要求他将它们合并为一个之后 - 没有得到任何响应,我现在尝试在 Git Bash 中将这些拉取请求合并在一起 - 但运气不佳 - 我很高兴使用合并按钮并通过Windows 上的 GitHub 程序,但仅此而已。我对 git shell 没有真正的了解 - 所以如果有人可以完成我如何将这些拉取请求合并在一起的过程(无论如何它们都不冲突),那将不胜感激。

4

1 回答 1

29

假设您有 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 and 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就像

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

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

git checkout master

git merge their-branch --no-ff 或者 git merge their-branch

并且 rebase 正在将您当前的分支重新定位到另一个分支(通常是主分支)

git checkout feature-branch

git rebase master

于 2013-01-18T02:31:54.590 回答