是否可以在不触及工作树的情况下知道合并是否会发生冲突?我不想触摸工作树,因为我不想让它签出.如果我想在几个分支机构看到这些信息,那将需要很长时间.
Ian*_*son 98
我假设你只是想知道在实际尝试合并之前你遇到了多少麻烦......并且在合并失败后重置到最后一次提交相对容易,所以我不会感到惊讶是预期的方法.
也就是说,如果您真的不想触摸工作树中的现有文件 - 您可以创建一个补丁并对目标分支进行测试.这样做的好处是可以准确显示对哪些文件进行了哪些更改 - 只需在文本编辑器中打开补丁文件即可.
git checkout -b mycrazybranch
[change some stuff...]
git add .
git commit -m "changed some stuff"
git format-patch master --stdout > crazy.patch
git checkout master
git apply crazy.patch --check
[all good! cleanup...]
rm crazy.patch
Run Code Online (Sandbox Code Playgroud)
如您所见,这将创建一个补丁文件,然后您可以使用--check进行测试并查看是否存在任何错误,然后删除补丁文件.
man*_*lds 76
git merge --abort看到有冲突后你可以做.
Con*_*Guo 58
作为现有答案的摘要,有两种方法可以检查是否存在合并冲突
git format-patch $(git merge-base branch1 branch2)..branch2 --stdout | git apply --3way --check -
注意,branch1当你运行上面的命令时,你当前的分支应该是
其他方式:
git merge --no-commit branch2
# check the return code here
git merge --abort
Run Code Online (Sandbox Code Playgroud)