0

我克隆了大师并开始为他做我的工作。由于权限,我将分支推送到我的 fork 。然后我向我的主人发送了一个拉取请求,并且有权限的人进行了合并。我注意到 Github.com 创建了一个合并提交快照,在我看来这只是整个更改的差异,实际上这不是必需的,但在某种意义上很有帮助,我可以查看合并提交以查看整个差异。我可以看到与我自己的分支相同的 sha - 因此看起来合并是一个额外的提交,它可能不是 nexeccary,因为它是一个快进?

master - a
myfork(computer) - a->b->c
myfork(github) - a->b->c

拉取请求 myfork-master(它说我可以自动合并)显示整个差异,然后当我合并它时,它显示为 master - a->b->c-d. d 是一个合并提交,我认为它不是真正需要的,因为它是一个快进?有人可以解释为什么会这样吗?我认为如果 master 已经继续,我 rebase master 的情况是一样的,但这并没有发生。师父还在我合并的时候。

4

1 回答 1

2

在这种情况下确实不需要合并提交,但无论如何创建一个也不是错误。git merge在命令行上支持--no-ff选项,即使可以进行快进,也可以避免快进合并。该开关可能是 GitHub 正在使用的。

就使最新的提交具有正确的代码而言,额外的合并提交是多余的,它确实会稍微混淆历史。但它确实具有添加有关合并的额外元数据的优势——它包含合并的日期,并使其在历史上更明确地表明其他人的代码被合并到分支中。GitHub 可能权衡了这些优点和缺点,并认为额外的提交是一个明智的默认设置。这个问题有更多关于快进何时合适和不合适的讨论。

于 2013-11-03T09:57:30.693 回答