有一次我以为git fetch origin --prune
删除了服务器上不再存在的本地分支。不知何故,这不是我目前的经验。
我运行了这个命令,本地分支没有被删除。它是 not 当前 checkout 。我运行git branch -vv
来检查这个信息,我看到
feature/MyGreatFeature f30efc7 [origin/feature/MyGreatFeature: gone]
所以它似乎知道它走了,为什么它不会删除我的本地分支呢?
运行git version 2.7.4 (Apple Git-66)
7条答案
按热度按时间esbemjvw1#
以下命令链可用于删除本地分支:
git branch --v
详细列出本地分支grep "\[gone\]"
查找远程分支消失的所有分支awk '{print $1}'
仅输出匹配的本地分支的名称xargs git branch -D
删除所有匹配的本地分支这应该在MacOS以及 *nix环境下都可以使用。
sf6xfgos2#
各种清理选项(
git remote update --prune
、git remote prune
、git fetch --prune
)* 仅 * 删除远程跟踪分支。1您需要手动删除不再需要的本地分支,或者如果远程跟踪分支不再存在,则更改或移除其上游设置。注意,每个本地分支都可以记录一个现在不存在,甚至从未存在的远程和/或分支。在这种情况下,Git通常会表现得好像这些本地分支没有上游设置一样,只是从1.8.5版本开始,几个命令将上行报告为“gone”或无效,并且可能建议使用
--unset-upstream
。1更准确地说,它们在从命令行或配置的
fetch
行执行refspecMap后删除目标引用。因此,对于提取镜像,它们 * 可以 * 删除本地分支。不过,大多数克隆并没有设置为提取镜像。最近有一些针对复杂Map的bug修复,以确保Git在某些情况下不会修剪Map的分支。对于任何普通的存储库--普通克隆或纯获取镜像--这些修复都没有效果;只有当您拥有复杂的
fetch
配置时,它们才有意义。k5hmc34c3#
这就是我如何使用Powershell。
然后,您可以创建一个别名,如下所示:
并在每次需要时通过运行
xnifntxz4#
您需要的命令是
This question几乎是逐字逐句的你要找的。
c9qzyr3d5#
对我来说,这句话很管用:
vktxenjb6#
如果用户需要PowerShell版本:
aor9mmx17#
如果您需要Windows命令行版本: