在 Git 中删除不再位于远程仓库中的本地分支
Ashok Chapagai
2022年12月19日
假设你的项目有许多在本地计算机上创建的分支,但在远程仓库中不存在。你可以轻松删除与远程仓库不同步的所有本地分支,但在此之前,你可能需要检查本地计算机中可用的所有分支,你可以运行 git branch
。
现在,要列出所有远程分支,你可以使用 git branch -r
命令。要在一个命令中实现这两个结果,你可以使用 git branch -a
命令。确认分支后,你可以继续阅读本文的其余部分。
在 Git 中删除(修剪)本地分支
你可以轻松运行以下命令来修剪不在远程仓库上的跟踪分支。
git remote prune origin
上面的命令会修剪不在远程仓库上的跟踪分支,但是本地分支尚未删除。要实际删除本地分支,你可能需要执行以下说明的额外步骤。
-
列出所有具有详细输出的分支,
git branch -vv
现在,你用管道输出到 grep 查找
origin/.* : gone]
,因为gone
状态被置于远程仓库中不可用但在本地计算机中可用的分支。grep 'origin/.*: gone]'
-
再次将输出传送到
awk
(这是一个非常好的格式化工具),如下所示。awk '{print $1}'
-
最后,你希望将输出通过管道传输到
xargs
,当你需要从一个命令获取输出并将其用作另一个命令的参数时,可以使用它。你不要将步骤 2 的输出传递给git branch -d
命令来删除本地分支,如下所示。xargs git branch -d
因此,修剪和删除远程仓库中不可用的所有本地分支的最后两个线性命令如下。
git remote prune origin
运行上面的命令后,你可能想运行下面的命令来实现删除远程仓库中不可用的本地分支。
git branch -vv | grep 'origin/.*: gone]' | awk '{print $1}' | xargs git branch -d
作者: Ashok Chapagai