如何授予 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/<someone_else>/<branch>
上的权限,大概管理员也可以授予我权限,以及refs/pull/<number>/merge
上的权限,我对此一无所知。
@Jonathan 您需要对所有受影响的分支具有相同的权限。当这些提交的历史被重写时,它会为这些提交生成一个新的分支哈希标识符。因此,强制推送也将对同时提交到 repo 的任何人造成破坏,因为他们的提交将有不同的父提交。
@Jonathan 另外请确保您的本地 repo 工作树是干净的(由git status
验证)。然后确保目标分支具有强制推送权限。
谢谢。显然,即使我是代表管理员,我仍然需要分配这些。
天蓝色也一样。以上是关于如何授予 Git 'ForcePush' 权限以将 bfg-repo-cleaner 结果推送到 VSTS?的主要内容,如果未能解决你的问题,请参考以下文章