我一直在用我在网上找到的命令删除我的本地分支,但是当我分析它时,我不确定grep -v“\ *”在命令行中做了什么,我删除了它仍然在做同样的事情(或者至少我是这么认为的)。我在网上找不到任何关于它的信息。另外,我发现了一个只有grep -v“*”的变体。搜索名称为“*”的分支没有意义,因为无法像那样调用它(至少在sourcetree上)
这是我一直在使用的命令。
git branch --merged | grep -v "\*" | grep -v master | grep -v develop | xargs -n 1 git branch -d
有人可以告诉我它是否重要,或者我是否可以从命令行中删除它?
答案 0 :(得分:1)
它过滤输入,留下所有不包含星号的行。
来自man grep
:
-v, - 反转匹配 反转匹配感,选择不匹配的线条。 (-v由POSIX指定。)
\*
是一种匹配星号的模式。由于-v
标志,这些行将从输出中删除。
在此上下文中,grep
命令将过滤git branch --merged
的输出。
后者输出一个分支列表,其中当前分支用星号标记。 grep -v "\*"
只是从输出中删除当前分支。
最后,您的整个命令将删除除master
,develop
和当前分支之外的所有合并分支。
如果省略第一个grep
,该命令将尝试删除当前已检出的分支,这将导致错误。
答案 1 :(得分:1)
git branch --merged
列出合并到HEAD
的分支。这是一个例子:
$ git branch --merged
master
* test
“*”是输出的一部分,为了排除此结果,您可以使用-v
选项将其反转:
echo "* master" | grep -v "\*"
将打印任何内容。
使用grep -v
的下一个管道会排除包含某些关键字的更多结果,最后会删除这些分支。
总之,该命令删除合并的分支,同时保持主分支和当前分支(旁边有“*”)。