Git删除TFS git存储库中的远程分支

Posted

技术标签:

【中文标题】Git删除TFS git存储库中的远程分支【英文标题】:Git delete remote branch in TFS git repository 【发布时间】:2013-02-21 19:02:18 【问题描述】:

我们在 Team Foundation Service 中使用 git,我们正在尝试通过运行以下命令找到删除远程分支的方法。

git push origin --delete TheBranchName

远程服务器一直拒绝并出现以下错误

 ! [remote rejected] TheBranchName (TF401026: The ForcePush permission is required to perform this action.) error: failed to push some refs to 'https://xxx.visualstudio.com/DefaultCollection/_git/Xxxxxx'

知道如何在 TFS 中为用户设置正确的权限吗?

【问题讨论】:

您似乎没有足够的权限来执行此操作。顺便说一句,命令是正确的 【参考方案1】:

来自git push 手册页:

-f
--force
    Usually, the command refuses to update a remote ref that is not an ancestor of the
    local ref used to overwrite it. This flag disables the check. This can cause the
    remote repository to lose commits; use it with care.

看起来您要删除的分支不是您所在分支的祖先 -- 添加此 --force 参数,看看是否有帮助。

【讨论】:

【参考方案2】:

要删除远程分支,您可以使用:

git push origin :TheBranchName

【讨论】:

我尝试了“git push origin --delete BranchName”并得到一个错误,我没有所需的权限 - 然后我按照您的建议使用“git push origin :BranchName”并提示我的凭据,然后工作!这如何/为什么起作用?【参考方案3】:

在这个link的第一个答案和第一条评论中回答了你的问题:

“有人在远程 repo 中启用了一个禁止删除的钩子——通常这样做是为了让某人无法将 rebase 分支推送到 repo。(我维护了一个相当大的 git 集合存储库,它们都是以这种方式配置的,尽管没有使用钩子。)

查看远程存储库中的 hooks/ 目录。会有一个名为“update”的脚本;这就是拒绝让你删除分支的原因。”

【讨论】:

这个问题是指TFS,它不支持远程挂钩。好吧,它确实如此,但不是通过 hooks/ 目录 - 你必须编写一个 TFS 事件处理程序,例如almsports.net/…【参考方案4】:

可以在以下位置访问存储库的安全选项 1。代码->资源管理器 2。从 Explorer 中选择一个 repo 3。在存储库的详细信息中,您应该单击资源管理器旁边的存储库名称。 4。选择管理存储库...菜单

您可以在此处配置每个贡献者组和个人用户对存储库及其分支的权限。 “重写和销毁历史记录(强制推送)”选项应该是允许或继承允许能够强制推送。

【讨论】:

我必须明确添加自己并授予自己该权限,并且它起作用了。【参考方案5】:

我遇到了这个问题,寻找一种在 VSO 中删除分支的方法。对于登陆这里的其他人,我有一个有点麻烦但有效的过程。从分支创建拉取请求。创建拉取请求后,放弃它。放弃请求后,您会看到一个删除源分支按钮。单击以删除分支。

【讨论】:

如果有效就好了。我刚试过 - 点击放弃后,只有重新激活按钮,没有任何“删除”选项。【参考方案6】:

我想编辑Ursegor answer,但我缺乏这样做的声誉。

在版本 14.102.25423.0(Team Foundation Server 2015 Update 3)中,可以在以下位置访问存储库的安全/权限选项:

    Code/Explorer 从资源管理器中选择一个存储库 单击存储库名称旁边的三个点...。 选择Security

【讨论】:

【参考方案7】:

我只需要打开 Git UI 工具,打开 repo 并从那里删除分支,它工作正常。我无法从 TFS 执行此操作。

【讨论】:

以上是关于Git删除TFS git存储库中的远程分支的主要内容,如果未能解决你的问题,请参考以下文章

删除远程git存储库中的标记

删除远程 git 存储库中的合并和提交

如何仅删除远程存储库中的文件? [复制]

如何从远程存储库中取消提交所有文件

sh 从git存储库中删除所有标记(本地和远程)

pip:从远程 git 存储库中提取更新