21

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

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

git 是否提供了可以完成此任务的命令或功能?

4

3 回答 3

27

正如 Marian Theisen 建议的那样,您可以这样做以在不提交的情况下进行合并

git merge --no-commit <branchname>

您可以退出该合并

git reset --hard

另外,请记住,在 Git 中改变主意并返回到以前的状态总是很容易的。您可以进行完整的合并,包括提交,检查完整的结果,如果您改变主意,您可以

git reset --hard HEAD^

丢弃合并并返回合并前的提交。

实际上,在合并解析期间的任何时候,您都可以

git reset --merge

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

于 2013-05-27T18:32:18.970 回答
24

我将其称为“代码审查工作流程”并且一直这样做。

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

这样,日志就变成了大步骤的时间线:逐个特性而不是逐个提交。

于 2013-05-27T18:46:22.417 回答
4

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

于 2013-05-27T18:43:10.700 回答