如何检查两个分支的合并冲突,而不合并它们?

由于项目的一个发布步骤,我无法合并两个分支,但我想知道它们之间是否存在合并冲突。我怎么能这么做?

28287 次浏览

假设您在 master分支上,并且您想要测试 dev分支是否可以在不与 master发生冲突的情况下合并。

# In the master branch
git merge dev --no-ff --no-commit

在那之后,你就能知道是否存在冲突。

在正常情况下返回,只需中止合并:

git merge --abort

根据 Git 的文件:

--ff
如果合并解析为快进,则不要生成合并提交,只更新分支指针。这是默认行为。

-no-ff
即使合并解析为快进,也要生成合并提交。

--commit
执行合并并提交结果。此选项可用于覆盖——无提交。

--no-commit
使用—— no-commit 执行合并,但假装合并失败并且不自动提交,以便让用户有机会在提交之前检查并进一步调整合并结果。

根据用例提供答案-你在一个特性分支上-致力于改变。与此同时,另一位同事对共享文件进行更改并合并到主干中。现在可以合并了。此时,您将遇到合并冲突的问题。

确保您有最新版本的主干分支

git fetch
git checkout trunk
git pull

切换回特性分支

git checkout feature

在特性分支中,将合并模拟为一个快进(—— no-ff)

git merge trunk --no-ff --no-commit

检查文件。

  • [ < < < < < < < HEAD ]和[ = = = = = = = ]之间的线是 特色分支
  • [ = = = = = ]和[ > > > > > > 主干]之间的线是 树干上的那些

若要中止模拟合并并返回到原始状态,请运行

git merge --abort