git:检查合并冲突而不实际进行合并

git:检查合并冲突而不实际进行合并

无法通过谷歌搜索找到这个精确问题的答案。

我进行正常合并,说git merge origin/master。说产生了一些冲突。

我不想这样。我只想检查一下,看看文件、提交和差异方面可能存在的冲突没有开始合并过程。

当然可以git reset --hard。只是看到潜在的冲突,就采取了相当激烈的措施。

答案1

合并不是“仅仅合并”。您可以选择不同的策略来合并分支,而且我担心 git 无法在分支实际合并之前预测(找出)冲突。假设,如果不运行合并过程,您只能获得某处存在“仅仅冲突”的信息。“仅仅冲突”不是有价值的信息(您写道您想查看有冲突的文件、提交等)。所以,没有“仅仅检查”。但实际上,三步解决方案非常简单。

正如 Lacek 指出的答案一样:

  1. 不提交合并并快进

    $ git merge --no-commit --no-ff <要合并的分支>

如果没有commit你就不必reset --hard这样做:-)

ff是合并的一个特例 - 正如 git 文档所述 - 当可能时,它只会更新分支指针以匹配合并的分支而不会创建合并提交,因此该--no-commit选项无法防止fast-forward

  1. 检查是否存在冲突,如果有,则检查冲突的文件

合并后的消息会告诉您是否“只是冲突”。但此时您可以更深入地检查冲突。当然,git diff --cached在链接的答案中提到了这一点,它git status会向您显示哪些文件存在冲突。由于合并过程会在文件中插入“故障点”,您可以查看它们git diff或手动查看它们。这也是git log --merge你的朋友。这样,您将获得有关冲突的有价值且可操作的见解。

  1. 撤消更改并清理混乱

    $ git merge --abort

这应该会重建合并前的状态。实际上,它会产生,因此会重置“MERGE_HEAD”,但如果使用选项在脏树上git reset --merge调用合并,还会将合并自动存储条目应用于工作树。--autostash

查看 git-merge 文档,了解上述所有选项https://git-scm.com/docs/git-merge

相关内容