如何解决Git仓库中的合并冲突?
如何解决我的Git仓库中的合并冲突?
试试:
git mergetool
它会打开一个GUI,逐步引导你解决每个冲突,并让你选择如何合并。有时候需要手动编辑一下,但通常它自己就够了。当然,它肯定比手工操作要好得多。
根据Josh Glover的评论:
这个命令不一定会自动打开一个GUI,除非你安装了某个工具。在我的情况下,运行
git mergetool后使用了vimdiff。你可以安装以下工具之一来使用它:meld、opendiff、kdiff3、tkdiff、xxdiff、tortoisemerge、gvimdiff、diffuse、ecmerge、p4merge、araxis、vimdiff、emerge。
下面是一个使用vimdiff解决合并冲突的示例程序,基于这个链接。
- 在终端中运行以下命令
git config merge.tool vimdiff
git config merge.conflictstyle diff3
git config mergetool.prompt false
这将把vimdiff设置为默认的合并工具。
2. 在终端中运行以下命令
git mergetool
- 你会看到一个以下列格式显示的
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
- 保存、退出、提交和清理
:wqa保存并退出vi编辑器
git commit -m "message"
git clean删除额外的文件(例如*.orig)。 警告: 它将所有未跟踪的文件都删除,如果你不传递任何参数的话。

浙公网安备 33010602011771号