如何在没有实际合并的情况下testing合并

有没有什么办法模拟两个分支,当前工作分支和主,但没有做任何改变之间的git merge

当我必须进行git merge时,我经常发生冲突。 有没有什么方法可以先模拟合并?

我不认为有一种模拟将会发生什么,直到你尝试合并。 但是,如果在合并之前确保git status的输出为空,那么继续尝试就很安全。 如果发生冲突,您可以立即回到之前的状态:

 git reset --merge 

既然git 1.7.4,你也可以通过做中止合并:

 git merge --abort 

(正如添加该选项的提交消息所解释的 ,这是为了与git rebase --abort等一致而添加的。)

你可以使用git merge --no-commit来防止合并实际上被提交,如果你不喜欢合并的方式,只需重置到原始头部。

如果你肯定不想完成合并,即使它是一个快进(因此没有冲突,根据定义),你也可以添加--no-ff

如果我想比较一个主题分支上的变化,我发现最简单和最安全的做到以下几点:

 git checkout master git checkout -b trial_merge git merge topic_branch 

合并完成后,很容易看到来自主人的统一变更

 git diff master 

完成后,只需删除trial_merge分支

 git checkout master git branch -D trial_merge 

这样,主分支从不改变。

我最近能够使用git merge --abort 。 但是,只有在存在合并冲突的情况下才能使用。 如果您确定不想提交,请使用上面提到的其他方法。

我用 :

 git merge --ff-only 

根据文件 :

拒绝合并并以非零状态退出,除非当前HEAD已经是最新的或合并可以被解决为快进。

这不是一个真正的模拟,因为在两个分支之间没有冲突的情况下,会有一个快进合并。 但是如果发生冲突,你会被告知,什么都不会发生。

为什么不创build一个一分钱的分支(git checkout -b),并在那里做一个testing合并?