如何测试是否允许强制推送?
How can I test if I am allowed to force push?
如果我想编辑已经推送到远程的过去的提交,我如何测试是否允许我在不实际更改任何内容的情况下强制推送?
要编辑过去的提交,我通常使用 git rebase -i HEAD~N
然后将 pick
更改为 edit
我想进行更改的地方。
如果我这样做并且之后意识到我不允许强制推送,我需要重置我的工作区(我想避免,因为我对提交所做的更改将会丢失)。
我知道对已经推送的提交执行此操作可能是不好的做法。
有没有办法在我实际进行变基之前对此进行测试?
唯一完全可靠的测试你是否有权做 X(对于一些任意的 X,通常甚至 Git-related) 是尝试执行 X 并查看是否成功。 "test if X is allowed, then do X" 的根本问题是答案可能会在测试和尝试之间发生变化。 (有些系统 确实 可靠地支持请求许可优先,但大多数系统不支持:大多数系统给你的答案在你得到它时就过期了。)
也就是说,Git 的强制推送权限由 other Git 决定,除了询问之外别无他法不管怎样试试吧!最接近于询问另一个 Git 的是询问另一个系统 关于 它的 Git,以某种其他系统特定的方式。最好的办法可能是创建一个临时分支,强制推送到它,然后删除它。如果强制推送步骤成功,那么您就知道您至少有权在那一刻强制推送到那个分支。
因为像 GitHub 这样的常见主机站点允许管理员 "lock" 或 "protect" 一些特定的分支。这是如何工作的,以及谁拥有什么权限的细节取决于那些托管站点。 Here is the GitHub page on their branch restriction options.
如果我想编辑已经推送到远程的过去的提交,我如何测试是否允许我在不实际更改任何内容的情况下强制推送?
要编辑过去的提交,我通常使用 git rebase -i HEAD~N
然后将 pick
更改为 edit
我想进行更改的地方。
如果我这样做并且之后意识到我不允许强制推送,我需要重置我的工作区(我想避免,因为我对提交所做的更改将会丢失)。
我知道对已经推送的提交执行此操作可能是不好的做法。
有没有办法在我实际进行变基之前对此进行测试?
唯一完全可靠的测试你是否有权做 X(对于一些任意的 X,通常甚至 Git-related) 是尝试执行 X 并查看是否成功。 "test if X is allowed, then do X" 的根本问题是答案可能会在测试和尝试之间发生变化。 (有些系统 确实 可靠地支持请求许可优先,但大多数系统不支持:大多数系统给你的答案在你得到它时就过期了。)
也就是说,Git 的强制推送权限由 other Git 决定,除了询问之外别无他法不管怎样试试吧!最接近于询问另一个 Git 的是询问另一个系统 关于 它的 Git,以某种其他系统特定的方式。最好的办法可能是创建一个临时分支,强制推送到它,然后删除它。如果强制推送步骤成功,那么您就知道您至少有权在那一刻强制推送到那个分支。
因为像 GitHub 这样的常见主机站点允许管理员 "lock" 或 "protect" 一些特定的分支。这是如何工作的,以及谁拥有什么权限的细节取决于那些托管站点。 Here is the GitHub page on their branch restriction options.