当强制推送 git 重新设置历史记录时,下游会发生什么

what happens downstream when force pushing a git rebased history

想象一下,如果有人强行进行rebased push,而下游的人一直在做事情,他们会发生什么?他们是否必须再次重新合并所有冲突?

首先,他们可能会丢失历史记录,下游可能会 "dangeling" 这是一件坏事。你最终可能会以某种方式挑选你的工作回到正轨。

所以永远不要强迫主人!

另一方面,如果你的下游已经以同样的方式重新建立了基础,这样上游和下游就可以找到一个共同的祖先,事情应该没问题。但是可能会发生冲突。但是不要和主人一起尝试这个! ;)

变基导致提交被重新创建,作为与旧对象不兼容的新对象。由于您替换了分支指针,因此仍然引用旧提交对象的每个人(即在您重新设置存储库之前获取存储库的每个人)都必须通过将其分支(本地或远程分支)重置为这些新提交来手动解决此问题。如果他们实际上有本地更改,这尤其困难。那样的话,他们也得变基了。

因此,一般来说,强行推送变基提交可能会以他们需要手动修复的方式破坏其他人的存储库。所以你应该避免变基 任何 过去发布的提交。

如果您对强制推送过程中发生的事情以及它如何影响合并和变基感兴趣,请查看 我在其中进行了更详细的介绍。