我有一个带有数十个遥控器的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
来清理缺少的引用。这没有任何作用,因为所有这些遥控器都存在。
我想我错过了一些小事。每次我研究这个,似乎我正确地做到了这一点,但我得到了上述错误。
答案 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 {}