GitHub“不能自动合并”?

有时候,当我试图将前叉与后叉合并,或者将后叉与前叉合并时,我会在 GitHub 上得到以下信息:

“无法自动合并。不用担心,您仍然可以创建请求。”

我如何看待这些冲突,如果有的话?

我已经阅读了大约10个不同的例子和不同的命令,但是我不能说出这些例子中的名字适用于我的情况,因为存在着不同的基础名称、分支名称、分支名称等。

在经历了这一切之后,我不敢相信竟然没有一个命令可以输入来查看冲突、编辑冲突并继续进行合并。 如果有的话,我还没找到。

124027 次浏览

这意味着,如果上游所有者不解决合并冲突,您的请求就不能合并到上游。

这里的解决方案是从上游执行提取操作,然后从上游解决合并冲突。在这一点上,如果你理论上从上游解决冲突,然后创建你的拉请求,上游将能够自动合并到你的拉请求没有任何冲突(假设没有提交上游之间你本地解决上游合并冲突和合并到你的本地/分叉,然后创建拉请求)。

让我们在这里使用 GitHub 作为远程回购存储的示例。

OriginalAccount repo1 -假设这是原始存储库(我们将其称为“上游”)

YourAccount repo1 -这将是存储库的分支(这通常是“原始”远程)

Repo1 本地-这是存储库的本地副本。

当您创建从 你的帐户回报1原始帐户回购1(实际上是从 起源逆流而上)的请求时,看到无法自动合并的消息意味着 原始帐户回购1已经提交了 你的帐户回报1没有的提交(很可能是在您分叉之后推出的提交)。

这里的解决方案是从 逆流而上获取到本地存储库(从 原始帐户回购1获取到本地回购) ,并在本地解决任何合并冲突。然后将提交推到 你的帐户回报1。此时,您应该能够创建能够自动合并到 原始帐户回购1中的请求。

注意: 尽管大多数 Git 服务不会阻止您继续使用拉请求,这需要上游贡献者来解决合并冲突,但是确保您的拉请求合并没有冲突是一个很好的实践和礼仪。这样想,你应该做合并冲突解决的工作,而不是让上游贡献者做你的贡献。

当您的代码被合并到回购将与已经存在的代码发生冲突时,就会出现冲突。 如果您的拉请求被接受,它将由回购经理解决他们。

最简单的方法就是这样使用 Github:

  • 在 Github 中选择分支选项卡,单击合并视图按钮,拖动 头叉到左边的盒子,拖动你的基地叉到右边的盒子。
  • 单击“ 合并分支”按钮。
  • 选择 改变选项卡。
  • 选择每个有冲突的文件 外部查看器保留 headfork 代码并将您的代码添加到其中。
  • Click 保存 on file(s).
  • 单击 承诺按钮。
  • 点击同步。
  • 转到 饭桶网站,并尝试合并您的基础叉头叉再次。

它将不再显示原始消息

假设有你的分支和主分支。您希望将来自 your-Branch 的更改合并到 master 中,以便其他人能够看到这些更改,但是其他人在此期间对 master 进行了相互冲突的更改(例如,合并他们的 PR)。在创建 PR 之前,将 master 合并到您的分支(即反过来进行合并)通常很有用。

在命令行中,您可以:

git checkout master
git pull
git checkout your-branch
git merge master

现在您可以看到冲突列表。按照从 git 获得的消息来解决冲突。你可以使用你最喜欢的工具,这样就简单多了。最后,你承诺并推动。当你重新建立公关,应该没有冲突。

答得好,来自 清理一个叉子,然后从上游重新启动它

The simplest solution would be (using 'upstream' as the remote name referencing the original repo forked):


git remote add upstream /url/to/original/repo
git fetch upstream
git checkout master
git reset --hard upstream/master
git push origin master --force