我克隆了主人并开始做我的工作。由于权限,我将分支推送到我的分支。然后我向我的主人发送拉取请求,并且有权限的人进行合并。 我注意到Github.com创建了一个合并提交快照,对我来说这看起来只是整个更改的差异,实际上并不是必需的,但在某种意义上我很有帮助,我可以看看合并提交以查看整个差异。我可以看到同样的sha有我自己的分支 - 因此看起来合并是一个额外的提交,可能因为它的快进而不是nexeccary?
master - a
myfork(computer) - a->b->c
myfork(github) - a->b->c
拉取请求myfork - master(它说它可以自动合并)显示整个diff,然后当我合并它时,它显示为
master - a->b->c-d
。 d是合并提交,我认为它不是真正需要的,因为它是一个快进?有人可以解释为什么会这样吗?我认为这是同样的情况,如果我坚持掌握如果主人已经取得了进展,但事实并非如此。当我合并时,师父还在。
答案 0 :(得分:1)
在这种情况下确实不需要合并提交,但是无论如何都不是错误。命令行上的git merge
支持--no-ff
option,即使可以快进,也可以避免快进合并。那个转换可能就是GitHub正在使用的。
额外的合并提交在使最新的提交具有正确的代码方面是多余的,并且它使历史略微混乱。但它确实具有添加关于合并的额外元数据的优势 - 它包含合并的日期,并使其在历史中更明确地将其他人的代码合并到分支中。 GitHub可能权衡了这些优点和缺点,并认为额外提交是一个合理的默认值。 This question更多地讨论了何时快速转发是合适的。