2013-05-27 25 views
11

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

当试图将分支A合并到分支B时,我通常会从B检出一个临时分支,并将它与分支A合并,然后创建一个diff分支,或者只是检出该临时分支并检查是否所有东西都是在合并A到B之前工作正常。

git是否提供了一个命令或功能来完成此操作?

+3

'git merge --no-commit' –

回答

18

由于玛丽安Theisen建议,你可以做到这一点做的合并,而无需提交

git merge --no-commit <branchname> 

你可以背出来的,与

git reset --hard 

而且合并,请记住,它总是容易备份在Git中。你可以做一个完全合并,包括提交,检查完整的结果,如果你改变了主意,你可以

git reset --hard HEAD^ 

扔掉合并,并回到了合并之前提交。

事实上,在合并过程中解决的任何一点,你可以做

git reset --merge 

要中止合并,扔掉刚合并的变化。

2

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

11

我称之为“代码审查工作流程”,并始终执行此操作。

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

没有--no-ff标志,如果混帐可以做一个快进那么它会做到这一点。 (正如预料的那样,在快进的情况下,没有合并提交创建。)

我在.gitconfig此别名设置为方便:

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

所以,我可以简单地做:

git rev branchname 

这个想法是,所有的功能都在独立的分支开发,每个功能都由作者以外的人审查和合并。正如其他答案指出,你可以中止合并:

git reset --merge 

并要求作者作出更多的更改。

成仅仅在合并查看日志犯我用这个别名其他:

revlog = log --first-parent 

这样的日志成为大步骤的时间表:功能,通过功能,而不是承诺在提交。

+0

在快速合并中没有风险。快速合并是最好的:没有风险,没有污染,只是将分支指针向前移动。为什么有人会那么随便地使用--no-ff标志对我来说是个谜。如果有任何人可以解释这一点,请这样做。根据我自己的经验,我会警告人们在决定采取何种方式之前真正理解快进方式。 –

+0

@PaulvanLeeuwen我同意你的看法。但这不是“随便使用'--no-ff'标志”的情况。这是在合并之前查看更改的具体问题的答案。虽然快进不是合并,但使用'--no-ff'似乎与OP的意图相符。 – janos