Git 日志分支拆分
Git log branches splitting
我一直在为 git 管理的项目做一些工作。在某些时候,我创建了一个
的分支
git -b my-branch
做了一些工作,提交并推送到远程仓库。后来,我合并了:
git checkout master
git merge my-branch
git push
但是当我用 gitlab 查看图表时,我没有看到分支分裂,就像这样
* * * * * * *
^
|
my-branch
当我期待
* * * * * * *
\-------^
|
my-branch
这是为什么?
这可能是因为 fast-forwarding。如果 Git 不需要进行合并,则不会。当您合并一个分支但未对其父级进行任何更改时,就会发生这种情况。
A - B - C - D - E [master]
\
F - G - H [feature]
在这个 repo 中,master
没有变化,因为 feature
是分支。 master
是 feature
的祖先。 E 和 F 之间明显的分支实际上并不存在,历史是直接的。
如果你 git checkout master; git merge feature
它会 "fast-forward" 你会得到这个。
[master]
A - B - C - D - E - F - G - H [feature]
master
移动到与 feature
相同的提交,没有完成合并。
您可以使用 git merge --no-ff
关闭此功能。我建议在合并功能分支时这样做,以避免丢失重要信息以理解代码。在上面的示例中,没有证据表明 F、G 和 H 是作为单个特征完成的。没有 link 讨论此功能的票证。
相反,如果我们 git checkout master; git merge --no-ff feature
这将强制 Git 合并,即使它没有必要。
A - B - C - D - E ---------- I [master]
\ /
F - G - H [feature]
我是合并提交,你会得到一个不错的功能气泡。
我一直在为 git 管理的项目做一些工作。在某些时候,我创建了一个
的分支git -b my-branch
做了一些工作,提交并推送到远程仓库。后来,我合并了:
git checkout master git merge my-branch git push
但是当我用 gitlab 查看图表时,我没有看到分支分裂,就像这样
* * * * * * * ^ | my-branch
当我期待
* * * * * * * \-------^ | my-branch
这是为什么?
这可能是因为 fast-forwarding。如果 Git 不需要进行合并,则不会。当您合并一个分支但未对其父级进行任何更改时,就会发生这种情况。
A - B - C - D - E [master]
\
F - G - H [feature]
在这个 repo 中,master
没有变化,因为 feature
是分支。 master
是 feature
的祖先。 E 和 F 之间明显的分支实际上并不存在,历史是直接的。
如果你 git checkout master; git merge feature
它会 "fast-forward" 你会得到这个。
[master]
A - B - C - D - E - F - G - H [feature]
master
移动到与 feature
相同的提交,没有完成合并。
您可以使用 git merge --no-ff
关闭此功能。我建议在合并功能分支时这样做,以避免丢失重要信息以理解代码。在上面的示例中,没有证据表明 F、G 和 H 是作为单个特征完成的。没有 link 讨论此功能的票证。
相反,如果我们 git checkout master; git merge --no-ff feature
这将强制 Git 合并,即使它没有必要。
A - B - C - D - E ---------- I [master]
\ /
F - G - H [feature]
我是合并提交,你会得到一个不错的功能气泡。