git删除本地无用分支


单个删除

  1. 首先查看所有本地分支的信息:
git branch -vv

这会列出每个本地分支,以及它们跟踪的远端分支。

  1. 然后使用grep过滤出没有跟踪远端分支的本地分支:
git fetch -p
git branch -vv | grep 'origin/.*: gone]'
  1. 最后删除这些本地分支:
git branch -d <branch-name>

比如:

git branch -d local-branch

这样就可以批量删除那些没有跟踪任何远端分支的本地分支了。另外,如果本地分支曾跟踪一个已经被删除的远端分支,也可以使用上述方法将其删除。使用这种方式可以定期清理本地无用的分支,保持仓库的整洁

批量删除

对于这个需求,我们可以通过 bash 的循环语句来实现批量删除:

git branch -vv | grep 'origin/.*: gone]' | awk '{print $1}' | xargs git branch -D

解析:

  1. git branch -vv 列出所有分支详情

  2. grep 过滤出 gone 的结果

  3. awk 打印出第1列,也就是分支名

  4. xargs 将分支名作为参数传给 git branch -D 命令这样就可以自动遍历所有无效分支并批量删除了。

或者也可以用一个简单的 for 循环:


for branch in $(git branch -vv | grep 'origin/.*: gone]' | awk '{print $1}'); do
  git branch -D $branch
done

效果是一样的。需要注意的是,这会无差别删除所有无远程关联的本地分支,请按需求谨慎操作。


文章作者: 高红翔
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 高红翔 !
  目录