【发布时间】:2019-09-24 12:57:36
【问题描述】:
假设我正在尝试查找以某些指定分支名称(Feature-123、Feature-126 和Feature-159)为前缀的任何提交的提交引用。为什么下面的 GIT 命令不起作用?
GIT reflog --grep 'Feature-1(59|2(3|6))'
但是没有 REGEX,这 3 个单独的命令可以正常工作(返回结果)。
GIT reflog --grep 'Feature-123'
GIT reflog --grep 'Feature-126'
GIT reflog --grep 'Feature-159'
--grep 在这种情况下是否不支持 REGEX,尽管它代表全局正则表达式打印?
【问题讨论】:
-
git reflog --grep 'Feature-1\(23\|26\|59\)' -
@EncryptedWatermelon 啊,你明白了!将其发布为答案,我会接受。在 GREP 中是否必须像这样对所有 REGEX 语法进行转义?
-
在 git grep 中,您需要转义特殊字符。如果你用普通的 grep 来做,它们就没有必要了。
git reflog | grep -E 'Feature-1(23|26|59)'。-E告诉 grep 这是一个正则表达式。 -
@EncryptedWatermelon 这样在
grep之前使用-E和|而没有--一开始让我有点吃惊。我猜它会将reflog的输出通过管道传输到grep,而不是作为同一命令的一部分。 -
没错。
reflog的输出通过管道传送到grep命令中。