我如何测试是否允许强制推送?
问题描述:
如果我想编辑已经推送到远程的过去提交,我如何测试我是否被允许强制推送而不实际更改任何内容?我如何测试是否允许强制推送?
要编辑过去的提交,我通常使用git rebase -i HEAD~N
,然后将pick
更改为edit
我想进行更改。 如果我这样做,然后意识到我不允许强制推送,我需要重置我的工作空间(我想避免,因为我对提交所做的更改将会丢失)。
我知道在已经推送提交的情况下执行此操作可能是不好的做法。
有没有办法在我实际进行rebase之前进行测试?
答
唯一完全可靠的测试是否具有相应的权限X(对于某些任意X,往往甚至没有Git的相关)是试图做X,看看它是否成功。 “测试是否允许X,然后做X”的根本问题是答案可能在测试和尝试之间变化。 (有些系统做支持要求,允许先可靠,但大多数人并不:最让你通过你得到它的时间到期的答案)
也就是说,Git的力量推权限由确定其他 Git,除了尝试以外,没有办法问它!你可以问其他Git最接近的问题是以其他系统特定的方式询问其他系统其Git,其中Git是。你最好的选择可能是创建一个临时分支,强制推送它,然后删除它。如果强制推送步骤成功,那么你知道你至少有权力在那一刻强制推送到那一个分支。
由于像GitHub这样的常用主机站点允许管理员“锁定”或“保护”某些特定的分支。这些工作的细节以及谁拥有什么权限,取决于那些托管站点。 Here is the GitHub page on their branch restriction options.
为什么“我对提交所做的更改”会丢失?您可以在重置之前创建一个指向它的分支。 – jingx
是的,这似乎工作,谢谢 – rlsw