如何检查git合并问题是否已修复?

pol*_*ris 5 git git-merge

合并分支时,通常会遇到命令提示符中列出的合并冲突.我知道如何通过查看存在冲突的文件并进行适当的更改来解决问题.我们也有"mergetool",这可能非常有用(虽然不是很擅长使用它).从我从不同来源读到的,解决这个问题的步骤是:

  • 解决冲突

这看起来很简单.但是,如果我错过了一些东西并且不解决它怎么办?除了使用mergetool之外,Git是否提供了一种检查是否还有其他东西需要修复的方法?

Sco*_*don 6

做:

git diff -S "<<<<<<< HEAD" -S "=======" -S ">>>>>>> $(git name-rev --name-only MERGE_HEAD)" HEAD
Run Code Online (Sandbox Code Playgroud)

这会将工作树的内容与进行比较HEAD,但是仅当更改中包括三种类型的合并标记中的一种​​或多种时,才会显示任何输出。

例如,如果要从名为的分支develop进行合并,则未合并的文件可能如下所示:

git diff -S "<<<<<<< HEAD" -S "=======" -S ">>>>>>> $(git name-rev --name-only MERGE_HEAD)" HEAD
Run Code Online (Sandbox Code Playgroud)

因此,要确保所有文件都已合并,您需要搜索以下三行之一:

<<<<<<< HEAD
=======
>>>>>>> develop
Run Code Online (Sandbox Code Playgroud)

这就是-S命令中的参数。由于并非总是如此develop,因此我们使用以下命令:

git name-rev --name-only MERGE_HEAD
Run Code Online (Sandbox Code Playgroud)

获取要合并到当前分支中的分支的名称。

(您可能只搜索这些行之一,但是搜索所有这三行更为健壮,并且将向您展示其中您忘记仅删除其中一行的情况。)

由于该命令将工作树与进行比较HEAD,而不仅是与分阶段的更改进行比较,因此即使您git add编辑了仍包含冲突的文件,此操作也将起作用。