我有一个相对较大的来自旧远程仓库的远程分支集合:
$ git branch -r
guy/feat1
guy/feat2
guy/feat3
guy/feat4
guy/feat5
guy/feat6
guy/feat7
guy/feat8
origin/HEAD
origin/master
是否有一个命令可以删除所有的guy
分支?
该存储库不再有guy
作为远程存储库。
我有一个相对较大的来自旧远程仓库的远程分支集合:
$ git branch -r
guy/feat1
guy/feat2
guy/feat3
guy/feat4
guy/feat5
guy/feat6
guy/feat7
guy/feat8
origin/HEAD
origin/master
是否有一个命令可以删除所有的guy
分支?
该存储库不再有guy
作为远程存储库。
git branch -r | grep guy/ | xargs git branch -d
您还可以尝试以下方法(来自git remote
):
git remote --prune guy
使用:
prune
<name>
下的所有过时的远程跟踪分支。这些过时的分支已经从<name>
引用的远程仓库中删除,但仍然在“remotes/”本地可用。--dry-run
选项,报告将要修剪的分支,但不实际修剪它们。git gc --prune=now
将清理这些分支(以及一些未引用的提交,因此请谨慎使用)
查看更多信息,请参见“如何从Git中删除无效的远程分支引用?”:如果可能的话,通常更安全的方法是使用:git branch -rd guy/badbranch
,但如果这不起作用,则git gc --prune=now
也可以解决问题。
guy
不再远程可用时,这条命令就不相关了。运行该命令会导致:fatal: 'guy' does not appear to be a git repository. fatal: The remote end hung up unexpectedly
。我猜测逻辑是该命令用于检查哪些分支不再存在于该远程仓库中。 - eoinocgit gc -prune=now
。看起来它压缩了仓库,但远程分支还是保留着。 - eoinocgit push <remote-repo> :branch-to-delete
注意在branch-to-delete之前有冒号。此外,请参见在git中删除多个远程分支... 这显示了如何构造一个一行代码以一次性删除多个分支。
git for-each-ref --format='%(refname)' 'refs/remotes/guy/*' | xargs git branch -d
。 - kostix