Git 强制推送到公共远程分支是否安全?

Git 强制推送到公共远程分支是否安全?,git,Git,我对本地功能分支进行了一些提交,并决定将其推送到公共存储库中,仅用于备份目的。重新设定某些提交的基础并强制(使用租约?)将其推送到公共存储库是否安全?在这种情况下,我是唯一一个在该分支上工作的人,但当有更多的人在该分支上工作时,是否仍然可以强制推送?简而言之: 不要这样做。没有先讨论过就不行。 如果Git告诉您它不会接受您的推送,因为ref没有排队,那么Git就是通过尝试保护存储库的完整性来完成它的工作 也就是说,如果您在本地分支上有Git不同意的历史记录,Git将不会接受 一旦您强制推送该分支

我对本地功能分支进行了一些提交,并决定将其推送到公共存储库中,仅用于备份目的。重新设定某些提交的基础并强制(使用租约?)将其推送到公共存储库是否安全?在这种情况下,我是唯一一个在该分支上工作的人,但当有更多的人在该分支上工作时,是否仍然可以强制推送?

简而言之:

不要这样做。没有先讨论过就不行。 如果Git告诉您它不会接受您的推送,因为ref没有排队,那么Git就是通过尝试保护存储库的完整性来完成它的工作

也就是说,如果您在本地分支上有Git不同意的历史记录,Git将不会接受

一旦您强制推送该分支,Git就会假定您知道自己在做什么,并允许您推送该分支

这对使用分支机构的任何其他人都有不利影响:

  • 历史已经被重写,所以当他们试图获得新的工作或试图整合上游的工作时,他们必须重写自己的本地历史以匹配上游
  • 提交可能会以这种方式丢失。因为您正在用一个重基重写历史,所以这是一个很有可能发生的场景
  • 如果没有任何事先的沟通,您将在维护人员中造成混乱,这将导致开发速度减慢
如果只是你自己,那也没关系,但是如果有其他人使用你的代码库,你必须采取预防措施

重新设定某些提交的基础并强制(使用租约?)将其推送到公共存储库是否安全

如果您确信您只在这个功能分支中工作,那么实际上,您可以选择您想要的,实际上,重设基础和强制推送同步可能是更好的解决方案

在这种情况下,我是唯一一个在这个分支上工作的人,但是当有更多的人在这个分支上工作时,是否仍然可以强制推进

在一些罕见的情况下,您和您的团队认为与保持历史不变相比,有一些附加值,您仍然可以进行强制推进。但除了这些非常具体的案例,每个人都同意,最好不要重写共享分支的历史。因为它会惹恼所有其他开发人员,并且通常需要更多的时间和更高级的知识(git-rebase-i)才能将其工作与修改了历史记录(强制推送)的远程设备同步

就像git中的很多东西一样,这不是阻止你做某些事情的工具,而是一个团队惯例,因为你发现了更好的东西


Ps:是的,如果你想强迫别人做什么,总是用“--force with lease”来做,以防止失去你没有看到的其他人的历史

您已经推送的所有内容都应该被视为不可变的,因为可能有同事已经在其本地存储库中推送了它。