Git 与 squash 合并但保留网络图

Git Merge with squash but keep network graph

假设我有开发分支和 FixBullshit 分支,并且我在 FixBullshit 中有 5 个提交,我做了一个拉取请求,但是使用合并 + squash 将开发与 FixBullshit 合并以将其保留在开发中作为 1 个提交以使其更清晰(是顺便说一句,这是最好的选择?)

问题是,在这样做之后,在 github 的网络图中,Bullshit 分支似乎已停止开发,但它从未合并,然后出现 1 个开发中的提交,但没有关系到 Bullshit 分支,就像它发生在我的 git https://github.com/noxerr/VRHarry/network 随着分支机构的发展和 "fixSensorsinput"

我做错了什么?我如何在网络上创建 link?

网络图显示 git 回购的历史,"squashing" 通过压缩改变历史。

Github 正在做的是获取这张图

A--B--C--D--E
    \
     F--G--H

F--G--H 压缩为单个提交 W,并将其应用为

A--B--C--D--E--W
    \
     F--G--H

要执行您的建议,您可以在合并之前将 F--G--H 压缩到一个提交 Q 中以制作类似

的图表
A--B--C--D--E--I
    \         /
     Q--------

不幸的是,这种形式的 squash 合并改变了历史,这可能会给那些拥有旧历史的本地副本的人带来问题。这可能就是 Github squash 的原因合并如上所述,而不是像这样。

互联网上有很多页面like this one介绍压缩、变基和其他合并方法的优缺点。

不确定我是否理解你的意思。您似乎既想压缩提交,又想保持开发提交。

在那种情况下,您只需要在与 squash 合并之前创建另一个分支 ,并且不要检查它。那么你将拥有两个分支。

如果你这样做,那么你将失去对分支的追踪,因为这是 git 的工作方式