Git 日志分支拆分



我一直在用git管理一个项目上做一些工作。在某个时候,我创建了一个分支

git -b my-branch

做了一些工作,提交并推送到远程存储库。后来,我合并了:

Git 结帐大师 git merge my-branch git push

但是当我使用 gitlab 查看图表时,我没有看到分支分裂,只是像这样

* * * * *
* ^ |  我的分支

当我期待类似的东西时

* * * * *
* \-------^ | 我的分支

这是为什么?

这可能是因为快进。如果 Git 不需要执行合并,则不会。当您合并分支但未对其父级进行任何更改时,会发生这种情况。

A - B - C - D - E [master]

F - G - H [feature]

在此存储库中,自feature分支以来master没有更改。masterfeature的祖先。E和F之间的明显分支实际上并不存在,历史是直的。

如果你git checkout master; git merge feature它会"快进",你最终会得到这个。

[master]
A - B - C - D - E - F - G - H [feature]

master移动到与feature相同的提交,则不会进行合并。


您可以使用git merge --no-ff关闭此功能。我建议在合并功能分支时这样做,以避免丢失理解代码的重要信息。在上面的例子中,没有证据表明 F、G 和 H 是作为一个特征完成的。没有指向讨论该功能的票证的链接。

相反,如果我们git checkout master; git merge --no-ff feature这将迫使 Git 合并,即使它不必合并。

A - B - C - D - E ---------- I [master]
         /
F - G - H [feature]

我是合并提交,你会得到一个很好的功能气泡。

最新更新