如何授予 Git 'ForcePush' 权限以将 bfg-repo-cleaner 结果推送到 VSTS?

Posted

技术标签:

【中文标题】如何授予 Git \'ForcePush\' 权限以将 bfg-repo-cleaner 结果推送到 VSTS?【英文标题】:How do I grant Git 'ForcePush' permissions for pushing bfg-repo-cleaner results to VSTS?如何授予 Git 'ForcePush' 权限以将 bfg-repo-cleaner 结果推送到 VSTS? 【发布时间】:2018-02-23 02:49:00 【问题描述】:

我公司的一个人是公司 VSTS 项目的管理员,他为我创建了一个 repo,并授予我对 master 分支的所有权限。

现在我需要在我的 repo 上运行 BFG Repro-Cleaner。它在本地运行良好,但是当我尝试 git push 我的镜像克隆时,我得到了:

! [remote rejected] user/<someone_else>/<branch> -> user/<someone_else>/<branch> (TF401027: You need the Git 'ForcePush' permission to perform this action. Details: identity <my identity>, scope 'branch'.)
! [remote rejected] refs/pull/<number>/merge -> refs/pull/<number>/merge (TF401027: You need the Git 'ForcePush' permission to perform this action. Details: identity <my identity>, scope 'branch'.)
error: failed to push some refs to 'https://<repo>'

我应该要求我的管理员授予我什么权限才能完成此操作?她将如何通过 VSTS Web UI 做到这一点?

【问题讨论】:

【参考方案1】:

除了上面的https://***.com/a/46215134/7851959。 您必须对分支和存储库执行相同的操作(代码 -> 管理存储库)。 还要记住默认配置:Project Collection Administrators 组没有强制推送权限。

【讨论】:

似乎 Azure UI 可能已更改,因为我不知道如何使此设置正常工作/保持不变。不再有“代码->管理存储库”AFAIK)。有什么建议吗? 在设置/存储库中,转到安全选项卡,找到您的用户或组并启用强制推送权限【参考方案2】:

要为分支设置强制推送权限,它位于 Branch Security。如果您是团队项目的管理员,您也可以自行设置。具体设置步骤如下:

在 VSTS 团队项目 -> 代码选项卡 -> 选择你正在工作的 repo -> 分支选项卡 -> 选择你要设置强制推送权限的分支 -> 按钮 -> 分支安全 -> 设置您所在的组或将您的帐户添加为用户 -> 将强制推送设置为 允许 -> 保存更改。

【讨论】:

正如我在原帖中所写,管理员在 master 分支上为我做了这件事。但是,该错误表明我缺少user/&lt;someone_else&gt;/&lt;branch&gt; 上的权限,大概管理员也可以授予我权限,以及refs/pull/&lt;number&gt;/merge 上的权限,我对此一无所知。 @Jonathan 您需要对所有受影响的分支具有相同的权限。当这些提交的历史被重写时,它会为这些提交生成一个新的分支哈希标识符。因此,强制推送也将对同时提交到 repo 的任何人造成破坏,因为他们的提交将有不同的父提交。 @Jonathan 另外请确保您的本地 repo 工作树是干净的(由git status 验证)。然后确保目标分支具有强制推送权限。 谢谢。显然,即使我是代表管理员,我仍然需要分配这些。 天蓝色也一样。

以上是关于如何授予 Git 'ForcePush' 权限以将 bfg-repo-cleaner 结果推送到 VSTS?的主要内容,如果未能解决你的问题,请参考以下文章

如何授予 ElasticBeanstalk 对 AWS CodeCommit 的访问权限

git使用问题(备忘帖)

Gitlab部署密钥已配置但仍不授予访问权限

如何授予 Kivy android 脚本的权限?

如何授予用户角色具有授予选项的权限?

如何设置不同用户只能看到某些部分的 git 存储库?