我正在合并一个可能有很多冲突的远程分支机构。我怎么知道它是否会有冲突?

我没看到任何类似于,git合并的预演。


当前回答

作为对已有答案的总结,有两种方法来检查是否存在合并冲突

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

其他回答

只要将当前分支与远程分支区别开来,这将告诉你当你进行拉/合并时将会发生什么变化。

#see diff between current master and remote branch
git diff master origin/master

用git撤销合并是如此简单,你甚至不应该担心演练:

$ git pull $REMOTE $BRANCH
# uh oh, that wasn't right
$ git reset --hard ORIG_HEAD
# all is right with the world

编辑:正如下面的评论中所指出的,如果你在你的工作目录或暂存区域中有更改,你可能想要在执行上述操作之前隐藏它们(否则它们将在上面的git重置后消失)

我做了一个别名来做这件事,就像一个魅力,我这样做:

 git config --global alias.mergetest '!f(){ git merge --no-commit --no-ff "$1"; git merge --abort; echo "Merge aborted"; };f '

现在我只需调用

git mergetest <branchname>

看看是否有任何冲突。

我知道这在理论上是跑题的,但对于从谷歌搜索到这里的人来说,实际上是非常切题的。

当有疑问时,你可以使用Github界面创建一个pull-request,并检查它是否表明干净的合并是可能的。

作为对已有答案的总结,有两种方法来检查是否存在合并冲突

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