在实际合并之前查看git-merge的结果

时间:2013-05-27 16:18:00

标签: git

有没有办法在实际合并之前检查两个分支之间合并的结果?

当尝试将分支A合并到分支B时,我通常从B检出一个临时分支,将其与分支A合并,然后我创建一个差异补丁,或者只是检查到该临时分支并检查一切是否正常工作在合并A到B之前很好。

git是否提供了可以实现此目的的命令或功能?

3 个答案:

答案 0 :(得分:20)

正如Marian Theisen建议的那样,你可以这样做而不提交

进行合并
git merge --no-commit <branchname>

您可以退出该合并

git reset --hard

另外,请记住,在Git中备份总是很容易。你可以进行完全合并,包括提交,检查完整的结果,如果你改变主意,你可以

git reset --hard HEAD^

抛弃合并并在合并之前返回提交。

事实上,在合并解决期间的任何时候,你都可以做到

git reset --merge

中止合并并抛弃合并更改。

答案 1 :(得分:17)

我称之为“代码审核工作流程”,并且一直这样做。

git merge --no-commit --no-ff branchname

如果没有--no-ff标志,如果Git可以快进,那么它就会这样做。 (正如预期的那样,在快进的情况下,没有合并提交来创建。)

为方便起见,我在.gitconfig设置了此别名:

rev = merge --no-ff --no-commit

这样我就可以做到:

git rev branchname

这个想法是所有功能都是在不同的分支中开发的,每个功能都由作者以外的人审查和合并。正如其他答案所指出的那样,您可以通过以下方式中止合并:

git reset --merge

并要求作者进行更多更改。

要仅使用合并提交查看日志,我使用其他别名:

revlog = log --first-parent

这样,日志就成了大步骤的时间轴:按功能逐行而不是按提交提交。

答案 2 :(得分:3)

为什么要麻烦?只需进行合并,测试它,如果你不喜欢它,那么git reset --hard HEAD^将回到合并前状态。无论你决定是否要保留合并,进行一些临时或中途合并只会增加你的工作。