4

我认为关于 rebase 和 push 的唯一规则是

提交被推送到公共仓库后,不要变基和推送

但是,如果我们只使用git pushorgit push origin <branch-name>而从不使用--forceor-f标志,那么它是否永远不会发生?

4

4 回答 4

6

如果您的公共回购是一个裸回购(意味着您可以直接在公共回购本身上重新建立任何东西),并且如果您将git config receive.denyNonFastForwards和设置receive.denyDeletes为 true,那么您应该没问题。

如果设置为 true,git-receive-pack将拒绝不是快进的 ref 更新。使用它来防止通过推送进行此类更新,即使该推送是强制的

如果设置为 true,git-receive-pack将拒绝删除 ref 的 ref 更新。使用它来防止通过 push 删除此类引用

另请参阅“有没有办法将 git 存储库配置为拒绝' git push --force'? ”。

请注意,例如,这些设置不能直接用于 GitHub 存储库。

于 2012-09-04T03:55:43.147 回答
1

确实(我认为)如果您不使用--force,远程仓库将永远不会处于“坏”状态,因此您不会意外地这样做。

但是,如果您重新设置已经在远程上的提交,您的本地存储库可能最终会处于无法推送到远程存储库的状态,而无需通过一些无论如何都会破坏重新设置点的体操。

于 2012-09-04T03:47:16.130 回答
1

是的。不使用 --force 就不能变基然后推送远程跟踪分支。

于 2012-09-04T03:59:21.703 回答
1

没有“-f”标志,它永远不会发生。
但是如果没有推送的能力,你会如何处理你的分支呢?

Rebase 主要是为了让你的分支历史保持良好和连续
当你是唯一一个合并到该代码中的人或者你只在本地执行它时,它是安全的。
否则,请确保您在重新定位之前与所有其他贡献者在同一页面上

于 2012-09-04T04:09:36.800 回答