命令 grep -v "\*" 有什么作用?
What does the command grep -v "\*" do?
前段时间在网上找到的一个命令,一直在删除本地分支,但是分析的时候,不太确定grep -v "\*" 在命令行中做了什么,我删除了它并且仍然在做同样的事情(或者至少我是这么认为的)。我在网上找不到任何关于它的信息。另外,我发现了一个变体,它只是 grep -v "*"。搜索名称为“*”的分支没有意义,因为不可能这样称呼它(至少在 sourcetree 上)
这是我一直在使用的命令。
git branch --merged | grep -v "\*" | grep -v master | grep -v develop | xargs -n 1 git branch -d
谁能告诉我它是否重要,或者我是否可以从命令行中删除它?
它过滤输入,留下所有不包含星号的行。
来自 man grep
:
-v, --invert-match
Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX.)
\*
是匹配星号的模式。由于 -v
标志,这些行将从输出中删除。
在此上下文中,grep
命令将过滤 git branch --merged
的输出。
后者输出一个分支列表,其中当前分支用星号标记。 grep -v "\*"
只是从输出中删除当前分支。
最后,您的整个命令将删除所有合并的分支,master
、develop
和当前分支除外。
如果您省略第一个 grep
,该命令将尝试删除当前签出的分支,这将导致错误。
git branch --merged
列出合并到 HEAD
的分支。这是一个例子:
$ git branch --merged
master
* test
“*”是输出的一部分,为了排除这个结果,你使用-v
选项来反转它:
echo "* master" | grep -v "\*"
会打印任何东西。
带有 grep -v
的下一个管道排除了更多具有某些关键字的结果,最后这些分支被删除。
总之,该命令删除合并的分支,同时保留主分支和当前分支(旁边有“*”的分支)。
前段时间在网上找到的一个命令,一直在删除本地分支,但是分析的时候,不太确定grep -v "\*" 在命令行中做了什么,我删除了它并且仍然在做同样的事情(或者至少我是这么认为的)。我在网上找不到任何关于它的信息。另外,我发现了一个变体,它只是 grep -v "*"。搜索名称为“*”的分支没有意义,因为不可能这样称呼它(至少在 sourcetree 上)
这是我一直在使用的命令。
git branch --merged | grep -v "\*" | grep -v master | grep -v develop | xargs -n 1 git branch -d
谁能告诉我它是否重要,或者我是否可以从命令行中删除它?
它过滤输入,留下所有不包含星号的行。
来自 man grep
:
-v, --invert-match Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX.)
\*
是匹配星号的模式。由于 -v
标志,这些行将从输出中删除。
在此上下文中,grep
命令将过滤 git branch --merged
的输出。
后者输出一个分支列表,其中当前分支用星号标记。 grep -v "\*"
只是从输出中删除当前分支。
最后,您的整个命令将删除所有合并的分支,master
、develop
和当前分支除外。
如果您省略第一个 grep
,该命令将尝试删除当前签出的分支,这将导致错误。
git branch --merged
列出合并到 HEAD
的分支。这是一个例子:
$ git branch --merged
master
* test
“*”是输出的一部分,为了排除这个结果,你使用-v
选项来反转它:
echo "* master" | grep -v "\*"
会打印任何东西。
带有 grep -v
的下一个管道排除了更多具有某些关键字的结果,最后这些分支被删除。
总之,该命令删除合并的分支,同时保留主分支和当前分支(旁边有“*”的分支)。