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

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


当前回答

如前所述,传入——no-commit标志,但为了避免快进提交,也传入——no-ff,如下所示:

$ git merge --no-commit --no-ff $BRANCH

检查阶段性的变化:

$ git diff --cached

你可以撤销合并,即使是快进合并:

$ git merge --abort

其他回答

如前所述,传入——no-commit标志,但为了避免快进提交,也传入——no-ff,如下所示:

$ git merge --no-commit --no-ff $BRANCH

检查阶段性的变化:

$ git diff --cached

你可以撤销合并,即使是快进合并:

$ 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>

看看是否有任何冲突。

我使用request-pull git命令来做到这一点。它允许您查看合并时可能发生的每个更改,但无需对本地或远程存储库进行任何操作。

例如,假设您想将一个名为“feature-x”的分支合并到您的主分支中

git request-pull master origin feature-x

将向您展示将发生什么(不做任何事情)的摘要:

The following changes since commit fc01dde318:
    Layout updates (2015-06-25 11:00:47 +0200)
are available in the git repository at:
    http://fakeurl.com/myrepo.git/ feature-x
for you to fetch changes up to 841d3b41ad:
----------------------------------------------------------------
john (2):
    Adding some layout
    Refactoring
ioserver.js            |   8 +++---
package.json           |   7 +++++-
server.js              |   4 +--
layout/ldkdsd.js       | 277 +++++++++++++++++++++++++++++++++++++
4 files changed, 289 insertions(+), 7 deletions(-)
create mode 100644 layout/ldkdsd.js

如果您添加-pparameter,您还将获得完整的补丁文本,就像您对每个更改的文件执行git diff一样。

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

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

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

我的简单粗暴解决方案是:

创建一个“pre-master”分支(当然来自master) 将所有你想要的东西合并到这个预master中。 然后你可以看到合并是如何发生的,而不触及主。 将pre-master合并为master OR 将所有想要发布的分支合并到master中

不管怎样,我会听从@orange80的建议。