我认为关于 rebase 和 push 的唯一规则是
提交被推送到公共仓库后,不要变基和推送
但是,如果我们只使用git push
orgit push origin <branch-name>
而从不使用--force
or-f
标志,那么它是否永远不会发生?
如果您的公共回购是一个裸回购(意味着您可以直接在公共回购本身上重新建立任何东西),并且如果您将git config receive.denyNonFastForwards
和设置receive.denyDeletes
为 true,那么您应该没问题。
如果设置为 true,
git-receive-pack
将拒绝不是快进的 ref 更新。使用它来防止通过推送进行此类更新,即使该推送是强制的。如果设置为 true,
git-receive-pack
将拒绝删除 ref 的 ref 更新。使用它来防止通过 push 删除此类引用。
另请参阅“有没有办法将 git 存储库配置为拒绝' git push --force
'? ”。
请注意,例如,这些设置不能直接用于 GitHub 存储库。
确实(我认为)如果您不使用--force
,远程仓库将永远不会处于“坏”状态,因此您不会意外地这样做。
但是,如果您重新设置已经在远程上的提交,您的本地存储库可能最终会处于无法推送到远程存储库的状态,而无需通过一些无论如何都会破坏重新设置点的体操。
是的。不使用 --force 就不能变基然后推送远程跟踪分支。
没有“-f”标志,它永远不会发生。
但是如果没有推送的能力,你会如何处理你的分支呢?
Rebase 主要是为了让你的分支历史保持良好和连续
当你是唯一一个合并到该代码中的人或者你只在本地执行它时,它是安全的。
否则,请确保您在重新定位之前与所有其他贡献者在同一页面上