我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们
文章版本: Enterprise Server 2.15

此版本的 GitHub Enterprise 将停止服务 此版本的 GitHub Enterprise 已停止服务 2019-10-16. No patch releases will be made, even for critical security issues. For better performance, improved security, and new features, upgrade to the latest version of GitHub Enterprise. For help with the upgrade, contact GitHub Enterprise support.

使用命令行解决合并冲突

您可以使用命令行和文本编辑器解决合并冲突。

当对文件的同一行进行竞争更改时,或者当一个人编辑文件而另一个人删除同一文件时,会发生合并冲突。 更多信息请参阅“关于合并冲突”。

提示:您可以使用冲突编辑器在 GitHub Enterprise 上解决作为拉取请求组成部分的各分支之间的竞争行更改合并冲突。 更多信息请参阅“在 GitHub 上解决合并冲突”。

竞争行更改合并冲突

要解决由竞争行更改导致的合并冲突,您必须从新提交的不同分支中选择要合并的更改。

例如,如果您和另一个人都在同一 Git 仓库不同分支的同一行中编辑了 styleguide.md 文件,则在尝试合并这些分支时会发生合并冲突错误。 必须使用新提交解决这一合并冲突,然后才能合并这些分支。

  1. 打开终端终端Git Bash终端

  2. 导航到有合并冲突的本地 Git 仓库中。

    cd REPOSITORY-NAME
  3. 生成受合并冲突影响的文件列表。 在此例中,文件 styleguide.md 存在合并冲突。

    $ git status
    > # On branch branch-b
    > # You have unmerged paths.
    > #   (fix conflicts and run "git commit")
    > #
    > # Unmerged paths:
    > #   (use "git add ..." to mark resolution)
    > #
    > # both modified:      styleguide.md
    > #
    > no changes added to commit (use "git add" and/or "git commit -a")
  4. 打开您首选的文本编辑器,例如 Atom,然后导航到有合并冲突的文件。

  5. 要在文件中查看合并冲突的开头,请在文件中搜索冲突标记 <<<<<<<。 当您在文本编辑器中打开文件时,您将在行 <<<<<<< HEAD 后看到 HEAD 或基本分支。 接下来,您将看到 =======,它将您的更改与其他分支中的更改分开,后跟 >>>>>>> BRANCH-NAME。 在本例中,一个人在基本或 HEAD 分支中编写 "open an issue",而另一个人在比较分支或 branch-a 中编写 "ask your question in IRC"。

If you have questions, please <<<<<<< HEAD

open an issue

ask your question in IRC.

branch-a 1. 决定是否仅保留自己分支的更改、仅保留另一个分支的更改或进行全新更改(可能包含两个分支的更改)。删除冲突标记 <<<<<<<=======>>>>>>> 并在最终合并中进行所需的更改。 在本例中,两个更改均整合到最终合并:

If you have questions, please open an issue or ask in our IRC channel if it's more urgent.
  1. 添加或暂存您的更改。

    $ git add .
  2. 提交您的更改及注释。

    $ git commit -m "Resolved merge conflict by incorporating both suggestions."

现在,您可以在命令行上合并分支,或在 GitHub Enterprise 上 将更改推送到远程仓库和在拉取请求中合并更改

删除的文件合并冲突

要解决由对文件进行竞争更改而导致的合并冲突,对于一个人删除分支中的文件而另一个人编辑同一文件的情况,您必须选择是删除还是将删除的文件保留在新提交中。

例如,如果您编辑一个文件(如 README.md),而另一个人在同一 Git 仓库的另一个分支中删除同一文件,当您尝试合并这些分支时将发生合并冲突错误。 必须使用新提交解决这一合并冲突,然后才能合并这些分支。

  1. 打开终端终端Git Bash终端

  2. 导航到有合并冲突的本地 Git 仓库中。

    cd REPOSITORY-NAME
  3. 生成受合并冲突影响的文件列表。 在此例中,文件 README.md 存在合并冲突。

    $ git status
    > # On branch master
    > # Your branch and 'origin/master' have diverged,
    > # and have 1 and 2 different commits each, respectively.
    > #  (use "git pull" to merge the remote branch into yours)
    > # You have unmerged paths.
    > #  (fix conflicts and run "git commit")
    > #
    > # Unmerged paths:
    > #  (use "git add/rm ..." as appropriate to mark resolution)
    > #
    > # deleted by us:   README.md
    > #
    > # no changes added to commit (use "git add" and/or "git commit -a")
  4. 打开您首选的文本编辑器,例如 Atom,然后导航到有合并冲突的文件。

  5. 决定是否要保留删除的文件。 您可能想要在文本编辑器中查看对删除的文件所做的最新更改。

    要将已删除的文件重新添加到仓库:

    $ git add README.md

要从仓库中删除此文件:

$ git rm README.md
> README.md: needs merge
> rm 'README.md'
  1. 提交您的更改及注释。

    $ git commit -m "Resolved merge conflict by keeping README.md file."
    > [branch-d 6f89e49] Merge branch 'branch-c' into branch-d

现在,您可以在命令行上合并分支,或在 GitHub Enterprise 上 将更改推送到远程仓库和在拉取请求中合并更改

延伸阅读

问问别人

找不到要找的内容?

联系我们