如何测试我是否可以强制推动?

时间:2017-08-29 16:15:45

标签: git git-rebase

如果我想编辑已经推送到遥控器的过去提交,我如何测试是否允许我强行推送而不实际更改任何内容?

要编辑过去的提交,我通常会使用git rebase -i HEAD~N,然后将pick更改为edit,我想在其中进行更改。 如果我这样做并在事后意识到我不允许强制推送,我需要重置我的工作区(我想避免,因为我对提交所做的更改将会丢失)。

我知道使用已推送的提交执行此操作可能是不好的做法。

有没有办法在我实际进行rebase之前测试它?

1 个答案:

答案 0 :(得分:3)

对于您是否有权执行 X (对于某些任意 X ,通常甚至与Git无关),唯一完全可靠的测试是尝试< em> X 并查看是否成功。 “测试是否允许 X ,然后执行 X ”的基本问题是答案可能会在测试和尝试之间发生变化。 (某些系统执行首先可靠地支持ask-permission-first,但大多数系统不会:大多数时候会给你一个在你获得它时到期的答案。)

那就是说,Git的强制推送权限是由其他 Git决定的,除了尝试之外没有其他问题!你可以来询问另一个Git最接近的是以其他系统特定的方式询问另一个系统关于它的Git。你最好的选择可能是创建一个临时分支,强制推送它,然后删除它。如果强制推动步骤成功,那么你知道你至少有权在那一刻强行推进那个分支。

由于像GitHub这样的常见主机站点允许管理员“锁定”或“保护”某些特定分支。有关其工作方式以及拥有哪些权限的详细信息,请参阅这些托管网站。 Here is the GitHub page on their branch restriction options.