【问题标题】:How do I resolve conflicts with Git?如何解决与 Git 的冲突?
【发布时间】:2015-08-06 18:39:47
【问题描述】:

我有一个pull request,GitHub 告诉我“此分支存在必须解决的冲突”。我试过了:

~/src/networkx: git rebase origin/master
Current branch topo is up to date.
~/src/networkx: git merge origin/master
Already up-to-date.

【问题讨论】:

  • 如果文件中有很多冲突,可能值得考虑使用带有 --ours 或 --theirs 标志的 git checkout - 有时比手动解决冲突更容易

标签: git github merge git-merge merge-conflict-resolution


【解决方案1】:

实际上...您不再需要在本地拉取和变基。
自 2016 年 12 月起,您可以直接从 GitHub 解决(简单)合并冲突。

见“Resolve simple merge conflicts on GitHub

您现在可以直接从您的拉取请求解决 GitHub 上的简单合并冲突,节省您前往命令行的时间并帮助您的团队更快地合并拉取请求

新功能可帮助您解决由竞争行更改引起的冲突,例如当人们在 Git 存储库的不同分支上对同一文件的同一行进行不同更改时。
您仍然需要在命令行本地解决其他更复杂的冲突

【讨论】:

  • 如果您不想从头开始整个事情,请不要使用此功能。有时当你按下提交按钮时,整个事情会冻结,如果你按回上一页 - 不小心在鼠标上 - 或者只是重新加载页面,你可以从 0 开始整个事情。
  • @RandomName 好点。这确实很不幸。
【解决方案2】:

首先,您需要确保已设置上游远程存储库:

git remote add upstream git@github.com:networkx/networkx.git

然后您需要获取upstream/master,然后在此基础上重新设置。大致是这样的:

git fetch upstream
git checkout <feature-branch>
git rebase upstream/master

当 git 在上游/master 之上重放您的工作时,将会引发冲突,您必须深入研究文件来解决它们。那么你:

git add <files that you fixed>
git rebase --continue

【讨论】:

  • 谢谢。我收到fatal: 'upstream' does not appear to be a git repository。在哪里查看上游存储库的名称?
  • @NeilG 添加了一些关于如何设置上游仓库
  • 有没有办法用 GitHub Desktop 做到这一点?
  • @Bennett 添加遥控器:是的。变基/解决冲突:没有。
  • @Paul H 刚刚找到“从上游更新”按钮。谢谢!
【解决方案3】:

尝试运行此程序以查看您设置了哪些遥控器:

git remote -v

如果你在 Github 中还没有你从 fork 的原始存储库的远程,你可以按如下方式添加它:

git remote add upstream https://github.com/networkx/networkx.git

这将命名远程上游。在此之后,您可以将最新的上游合并到您的分支中并解决您的冲突:

git fetch upstream
git merge upstream/master

如果第一个git remote -v 命令已经显示了一个具有该名称的遥控器,只需使用它而不是添加一个新的遥控器。希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2010-09-11
    • 1970-01-01
    • 2018-05-15
    • 2010-11-28
    • 1970-01-01
    • 2017-08-13
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多