Git日志分支分裂

时间:2017-02-01 10:01:11

标签: git branching-and-merging

我一直在用git管理的项目上做一些工作。在某些时候,我用

创建了一个分支
git -b my-branch

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

git checkout master
git merge my-branch
git push

但是当我用gitlab查看图形时,我看不到分支分裂,就像这样

* * * * * * * 
            ^
            |
         my-branch

当我期待像

这样的东西时
* * * * * * *
    \-------^
            |
        my-branch

为什么会这样?

1 个答案:

答案 0 :(得分:3)

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

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

在这个回购中,master没有变更,因为feature是分支。 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]

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