我正在合并一个可能有很多冲突的远程分支机构。我怎么知道它是否会有冲突?
我没看到任何类似于,git合并的预演。
我正在合并一个可能有很多冲突的远程分支机构。我怎么知道它是否会有冲突?
我没看到任何类似于,git合并的预演。
当前回答
我猜你只是想知道在真正尝试合并之前你给自己惹了多少麻烦……并且在合并失败后重置到最后一次提交相对容易,所以如果这是预期的方法,我不会感到惊讶。
也就是说,如果你真的不想触及工作树中现有的文件,你可以创建一个补丁并针对目标分支测试它。这还可以显示对哪些文件做了哪些更改-只需在文本编辑器中打开补丁文件。
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
如您所见,这将创建一个补丁文件,然后您可以测试它—检查并查看是否有任何错误,然后删除补丁文件。
其他回答
如果你想从B快进到A,那么你必须确保git log B..A没有显示任何东西,也就是说A没有B没有的东西。但即使B. A有一些东西,你仍然可能能够合并而没有冲突,所以上面说明了两件事:将会有一个快进,因此你不会得到冲突。
只要将当前分支与远程分支区别开来,这将告诉你当你进行拉/合并时将会发生什么变化。
#see diff between current master and remote branch
git diff master origin/master
作为对已有答案的总结,有两种方法来检查是否存在合并冲突
Git format-patch $(Git merge-base branch1 branch2).——| git apply——3way——check -
注意,在运行上述命令时,当前的分支应该是branch1
另一种方法:
git merge --no-commit branch2
# check the return code here
git merge --abort
我做了一个别名来做这件事,就像一个魅力,我这样做:
git config --global alias.mergetest '!f(){ git merge --no-commit --no-ff "$1"; git merge --abort; echo "Merge aborted"; };f '
现在我只需调用
git mergetest <branchname>
看看是否有任何冲突。
我猜你只是想知道在真正尝试合并之前你给自己惹了多少麻烦……并且在合并失败后重置到最后一次提交相对容易,所以如果这是预期的方法,我不会感到惊讶。
也就是说,如果你真的不想触及工作树中现有的文件,你可以创建一个补丁并针对目标分支测试它。这还可以显示对哪些文件做了哪些更改-只需在文本编辑器中打开补丁文件。
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
如您所见,这将创建一个补丁文件,然后您可以测试它—检查并查看是否有任何错误,然后删除补丁文件。