我正在合并一个可能有很多冲突的远程分支机构。我怎么知道它是否会有冲突?
我没看到任何类似于,git合并的预演。
我正在合并一个可能有很多冲突的远程分支机构。我怎么知道它是否会有冲突?
我没看到任何类似于,git合并的预演。
当前回答
用git撤销合并是如此简单,你甚至不应该担心演练:
$ git pull $REMOTE $BRANCH
# uh oh, that wasn't right
$ git reset --hard ORIG_HEAD
# all is right with the world
编辑:正如下面的评论中所指出的,如果你在你的工作目录或暂存区域中有更改,你可能想要在执行上述操作之前隐藏它们(否则它们将在上面的git重置后消失)
其他回答
如果你想从B快进到A,那么你必须确保git log B..A没有显示任何东西,也就是说A没有B没有的东西。但即使B. A有一些东西,你仍然可能能够合并而没有冲突,所以上面说明了两件事:将会有一个快进,因此你不会得到冲突。
你可以在看到冲突后执行git merge -abort。
我使用git日志来查看从主分支到特性分支上发生了什么变化
git log does_this_branch..contain_this_branch_changes
例如,查看哪些提交在一个已经/没有被合并到master的特性分支中:
git log master..feature_branch
Git在合并时引入了——ff-only选项。
来自:http://git-scm.com/docs/git-merge ——ff-only 拒绝合并并以非零状态退出,除非当前HEAD已经是最新的,或者合并可以作为快进解决。
这样做将尝试合并和快进,如果不能,它将中止并提示您不能执行快进,但不影响您的工作分支。如果它可以快进,那么它将在工作分支上执行合并。此选项也可用于git拉取。因此,你可以这样做:
git pull --ff-only origin branchA #See if you can pull down and merge branchA
git merge --ff-only branchA branchB #See if you can merge branchA into branchB
我的解决方案是向后归并。
不要将您的分支合并到远程“目标”分支中,而是将该分支合并到您的分支中。
git checkout my-branch
git merge origin/target-branch
你将看到是否有任何冲突,并可以计划如何解决它们。
在这之后,你可以通过git merge—abort终止合并,或者(如果没有任何冲突并且合并已经发生)通过git reset—hard HEAD~1回滚到之前的提交