无法通过谷歌搜索找到这个精确问题的答案。
我进行正常合并,说git merge origin/master
。说产生了一些冲突。
我不想这样。我只想检查一下,看看文件、提交和差异方面可能存在的冲突没有开始合并过程。
当然可以git reset --hard
。只是看到潜在的冲突,就采取了相当激烈的措施。
答案1
合并不是“仅仅合并”。您可以选择不同的策略来合并分支,而且我担心 git 无法在分支实际合并之前预测(找出)冲突。假设,如果不运行合并过程,您只能获得某处存在“仅仅冲突”的信息。“仅仅冲突”不是有价值的信息(您写道您想查看有冲突的文件、提交等)。所以,没有“仅仅检查”。但实际上,三步解决方案非常简单。
正如 Lacek 指出的答案一样:
不提交合并并快进
$ git merge --no-commit --no-ff <要合并的分支>
如果没有commit
你就不必reset --hard
这样做:-)
ff
是合并的一个特例 - 正如 git 文档所述 - 当可能时,它只会更新分支指针以匹配合并的分支而不会创建合并提交,因此该--no-commit
选项无法防止fast-forward
。
- 检查是否存在冲突,如果有,则检查冲突的文件
合并后的消息会告诉您是否“只是冲突”。但此时您可以更深入地检查冲突。当然,git diff --cached
在链接的答案中提到了这一点,它git status
会向您显示哪些文件存在冲突。由于合并过程会在文件中插入“故障点”,您可以查看它们git diff
或手动查看它们。这也是git log --merge
你的朋友。这样,您将获得有关冲突的有价值且可操作的见解。
撤消更改并清理混乱
$ git merge --abort
这应该会重建合并前的状态。实际上,它会产生,因此会重置“MERGE_HEAD”,但如果使用选项在脏树上git reset --merge
调用合并,还会将合并自动存储条目应用于工作树。--autostash
查看 git-merge 文档,了解上述所有选项https://git-scm.com/docs/git-merge