git delete remotes:远程引用不存在

时间:2015-08-21 18:27:04

标签: git git-remote

简而言之;

  • 如何删除远程多个合并的遥控器?

更多背景;

我有一个带有数十个遥控器的git仓库,这些遥控器已经合并为主人。我可以使用以下方法一次删除这些遥控器:

git push --delete origin myBranch-1234

然而,对于所有遥控器来说,这是一个缓慢而乏味的过程。所以我正在尝试这个命令:

git branch -r --merged | grep origin | grep -v master | xargs git push origin --delete

git branch -r --merged列出所有合并的遥控器 grep origin告诉命令包含原点 grep -v master告诉命令排除master xargs git push origin --delete告诉命令删除遥控器列表。

总之,我希望这会收集所有合并的遥控器并删除它们。

当我运行上面的命令时,我会收到每个合并的遥控器的以下内容;

error: unable to delete 'origin/myBranch-1234': remote ref does not exist
error: unable to delete 'origin/myBranch-1235': remote ref does not exist
error: unable to delete 'origin/myBranch-1236': remote ref does not exist
error: unable to delete 'origin/myBranch-1237': remote ref does not exist
... etc

然而,这些遥控器确实存在,我可以检查每个遥控器。许多网站和人员建议我运行git fetch --prune来清理缺少的引用。这没有任何作用,因为所有这些遥控器都存在。

所以我问你,亲爱的堆栈交换;

  • 为什么我可以删除一个遥控器,但不是很多?
  • 我的命令是否正确?

我想我错过了一些小事。每次我研究这个,似乎我正确地做到了这一点,但我得到了上述错误。

3 个答案:

答案 0 :(得分:188)

您可能需要修剪本地"缓存"首先是远程分支机构。尝试运行:

<div class="col"> <div class="content">content:</div> </div> <div class="col"> <div class="navigation"> <ul> <li><a href="#">punkt</a></li> </ul> </div> </div>

删除前

答案 1 :(得分:86)

这些分支是否已从远程(原点)移除?如果是,你可以简单地做

git fetch --prune origin

否则即使您在本地删除它们,它们也可能会返回。

更新:再次查看您的命令,看起来您正在错误地构建它。你可能想要

git push origin --delete myBranch-1234

但你正在做类似

的事情
git push origin --delete origin/myBranch-1234

答案 2 :(得分:12)

使用sed删除&#39; origin /&#39;部分并更改一部分xargs部分。

git branch -r --merged | grep origin | grep -v -e master | sed s/origin\\/// |  xargs -I{} git push origin --delete {}