如何解决Git仓库中的合并冲突?

发布时间 2023-10-10 20:42:07作者: 小满独家

内容来自 DOC https://q.houxu6.top/?s=如何解决Git仓库中的合并冲突?

如何解决我的Git仓库中的合并冲突?


试试:

git mergetool

它会打开一个GUI,逐步引导你解决每个冲突,并让你选择如何合并。有时候需要手动编辑一下,但通常它自己就够了。当然,它肯定比手工操作要好得多。


根据Josh Glover的评论:

这个命令不一定会自动打开一个GUI,除非你安装了某个工具。在我的情况下,运行git mergetool后使用了vimdiff。你可以安装以下工具之一来使用它:meldopendiffkdiff3tkdiffxxdifftortoisemergegvimdiffdiffuseecmergep4mergearaxisvimdiffemerge


下面是一个使用vimdiff解决合并冲突的示例程序,基于这个链接。

  1. 在终端中运行以下命令
git config merge.tool vimdiff
git config merge.conflictstyle diff3
git config mergetool.prompt false

这将把vimdiff设置为默认的合并工具。
2. 在终端中运行以下命令

git mergetool

  1. 你会看到一个以下列格式显示的vimdiff
  ╔═══════╦══════╦════════╗
  ║       ║      ║        ║
  ║ LOCAL ║ BASE ║ REMOTE ║
  ║       ║      ║        ║
  ╠═══════╩══════╩════════╣
  ║                       ║
  ║        MERGED         ║
  ║                       ║
  ╚═══════════════════════╝

这些视图是:

  • LOCAL: 这是来自当前分支的文件
  • BASE: 共同祖先,这个文件在两个更改之前看起来是什么样子的
  • REMOTE: 你正在将其合并到你的分支中的文件
  • MERGED: 合并结果;这是保存在合并提交中并在将来使用的。

你可以使用ctrl+w在这些视图之间导航。你可以直接通过按ctrl+w,然后按j键来访问MERGED视图。

有关vimdiff导航的更多信息,请参阅这里和这里。
4. 你可以像这样编辑MERGED视图:

  • 如果你想获取来自REMOTE的更改

    • :diffg RE
  • 如果你想获取来自BASE的更改

    • :diffg BA
  • 如果你想获取来自LOCAL的更改

    • :diffg LO
  1. 保存、退出、提交和清理

:wqa保存并退出vi编辑器

git commit -m "message"

git clean删除额外的文件(例如*.orig)。 警告: 它将所有未跟踪的文件都删除,如果你不传递任何参数的话。