我想解决我的Git存储库中的合并冲突。
我怎样才能做到这一点?
尝试: git mergetool
git mergetool
它会打开一个 GUI,引导您解决每个冲突,您可以选择如何合并。有时它需要在之后进行一些手动编辑,但通常它本身就足够了。这肯定比手工完成整个事情要好得多。
命令
除非您安装 GUI,否则不一定会打开 GUI。git mergetool为我奔跑导致vimdiff被利用。您可以安装以下工具之一来使用它:meld, opendiff, kdiff3, tkdiff, xxdiff, tortoisemerge, gvimdiff, diffuse, ecmerge, p4merge, araxis, vimdiff, emerge.
vimdiff
meld
opendiff
kdiff3
tkdiff
xxdiff
tortoisemerge
gvimdiff
diffuse
ecmerge
p4merge
araxis
emerge
下面是vimdiff用于解决合并冲突的示例过程。基于此链接
第 1 步:在终端中运行以下命令
git config merge.tool vimdiff git config merge.conflictstyle diff3 git config mergetool.prompt false
这会将 vimdiff 设置为默认合并工具。
第 2 步:在终端中运行以下命令
第 3 步:您将看到以下格式的 vimdiff 显示
╔═══════╦══════╦════════╗ ║ ║ ║ ║ ║ LOCAL ║ BASE ║ REMOTE ║ ║ ║ ║ ║ ╠═══════╩══════╩════════╣ ║ ║ ║ MERGED ║ ║ ║ ╚═══════════════════════╝
这 4 个视图是
LOCAL – 这是来自当前分支的文件 BASE – 共同祖先,文件在两次更改之前的外观 远程 - 您要合并到分支中的文件 MERGED – 合并结果,这是保存在 repo 中的内容
LOCAL – 这是来自当前分支的文件
BASE – 共同祖先,文件在两次更改之前的外观
远程 - 您要合并到分支中的文件
MERGED – 合并结果,这是保存在 repo 中的内容
您可以使用ctrl+在这些视图之间导航w。您可以使用ctrl+w后跟j.
第 4 步。您可以通过以下方式编辑 MERGED 视图
如果您想从 REMOTE 获取更改
:diffg RE
如果您想从 BASE 获取更改
:diffg BA
如果您想从 LOCAL 获取更改
:diffg LO
第 5 步。保存、退出、提交和清理
:wqa 保存并退出 vi
:wqa
git commit -m "message"
git clean 删除由 diff 工具创建的额外文件(例如 *.orig)。
git clean