一尘不染

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

git

我想解决我的Git存储库中的合并冲突。

我怎样才能做到这一点?


阅读 240

收藏
2022-01-06

共1个答案

一尘不染

尝试: git mergetool

它会打开一个 GUI,引导您解决每个冲突,您可以选择如何合并。有时它需要在之后进行一些手动编辑,但通常它本身就足够了。这肯定比手工完成整个事情要好得多。

命令

除非您安装 GUI,否则不一定会打开 GUI。git mergetool为我奔跑导致vimdiff被利用。您可以安装以下工具之一来使用它:meld, opendiff, kdiff3, tkdiff, xxdiff, tortoisemerge, gvimdiff, diffuse, ecmerge, p4merge, araxis, vimdiff, emerge.

下面是vimdiff用于解决合并冲突的示例过程。基于此链接

第 1 步:在终端中运行以下命令

git config merge.tool vimdiff
git config merge.conflictstyle diff3
git config mergetool.prompt false

这会将 vimdiff 设置为默认合并工具。

第 2 步:在终端中运行以下命令

git mergetool

第 3 步:您将看到以下格式的 vimdiff 显示

  ╔═══════╦══════╦════════╗
  ║       ║      ║        ║
  ║ LOCAL ║ BASE ║ REMOTE ║
  ║       ║      ║        ║
  ╠═══════╩══════╩════════╣
  ║                       ║
  ║        MERGED         ║
  ║                       ║
  ╚═══════════════════════╝

这 4 个视图是

LOCAL – 这是来自当前分支的文件

BASE – 共同祖先,文件在两次更改之前的外观

远程 - 您要合并到分支中的文件

MERGED – 合并结果,这是保存在 repo 中的内容

您可以使用ctrl+在这些视图之间导航w。您可以使用ctrl+w后跟j.

第 4 步。您可以通过以下方式编辑 MERGED 视图

如果您想从 REMOTE 获取更改

:diffg RE

如果您想从 BASE 获取更改

:diffg BA

如果您想从 LOCAL 获取更改

:diffg LO

第 5 步。保存、退出、提交和清理

:wqa 保存并退出 vi

git commit -m "message"

git clean 删除由 diff 工具创建的额外文件(例如 *.orig)。

2022-01-06