'git push -f'和'deleting remote branch and push again'的区别



当我在远程分支发现我的

错误错误时,我总是删除它,在本地压缩并再次推送。因为我听说"git-push-f"很危险。然而,我注意到gitfetch之后显示的推送结果如下所示。

新BRANCH_NAME"(强制)"

我的工作流删除并再次推送是否正确?这种方式和"push-f"有什么不同?

从功能上讲,删除并再次推送至少与git push -f一样危险。

然而,删除并再次推送实际上比git -f push更糟糕,原因非常具体:

至少对于git -f push替换是原子性的

尽管如此,当你独自工作时,这并不是什么大事。

  1. 当你使用git -f push时,你会被告知更换了什么放置在生成的消息中:X...Y branch -> branch (forced update)。从那里,你可以确保X真的是要吹走的
  2. 当你做git push origin :branch && git push origin branch时,如果你不是唯一一个可能推到branch的人,你就无法真正说出你删除了什么

不,首先删除远程分支不会使其更安全。

强制推送之所以危险是由于工作流程的原因,而不是技术原因。如果有人拉了你的错误分支,那么你强制推送分支上设置的正确更改,这可能会对他们的历史记录和他们在分支顶部所做的任何更改造成严重破坏,因为他们的拉将不再是快进的(除非他们用强制拉来修复错误分支,或者如果他们重新调整更改的基础),这可能意味着他们可能会再次引入错误的变化。在一个只有一个提交者的团队中,这通常不会是什么大问题,对于更大的项目,有很多提交者和很多观察者,那么问题的可能性会更大,因为可能不仅仅是一两个人下载了错误的分支。

最新更新