如何为包含“a”的字符串git grep&燃气轮机&引用;?

如何为包含“a”的字符串git grep&燃气轮机&引用;?,git,bash,Git,Bash,git-grep似乎比常规GNUgrep有更简单的规则,这将允许您进行和。我正在尝试查找字符串->upload的出现情况,但似乎无法逃避它 如何运行git grep“->upload” $git grep->上传 无输出;返回0 $git grep“->上传” 错误:未知开关“>” git grep“\-\>上传” 无输出;返回错误 $git grep'->上传' 错误:未知开关“>” 如有疑问,请使用单字符类而不是反斜杠在正则表达式中生成单字符文字: git grep -e '-[>]u

git-grep
似乎比常规GNU
grep
有更简单的规则,这将允许您进行和。我正在尝试查找字符串
->upload
的出现情况,但似乎无法逃避它

如何运行
git grep“->upload”

$git grep->上传
无输出;返回0
$git grep“->上传”
错误:未知开关“>”
git grep“\-\>上传”
无输出;返回错误
$git grep'->上传'
错误:未知开关“>”

如有疑问,请使用单字符类而不是反斜杠在正则表达式中生成单字符文字:

git grep -e '-[>]upload'
反斜杠的含义可能因使用的特定字符和特定正则表达式语法而有所不同,
[>]
的含义是一致的

也就是说,这里最直接的问题不是由
引起的,而是由前面的破折号引起的,这使得字符串与选项列表无法区分。

之所以需要
-e
,不是因为
,而是因为
-
。没有它,
->upload
将被视为一系列标志(
->
-u
-p
-l
-o
-a
-d


也就是说,您可以不使用
-e
,也可以将破折号移动到字符类中,从而使其不再是命令行中的第一个字符:

git grep '[-][>]upload'
选项
-F
意味着:对模式使用固定字符串(不要将模式解释为正则表达式)


--
将选项与参数分开。

在问题中包含错误消息会让人们直接跳到问题上(实际上与
无关)。尝试
git grep-upload
——你会看到一个非常类似的问题。再次重复我自己:尝试
git grep-upload'
,没有
——你仍然会得到“未知开关”,只是一个不同的字符是直接的断点。消息中包含
,只是因为它是前导
-
后面的第一个字符,不能被识别为有效选项。顺便说一句,
git grep->upload“
git grep->upload”
完全相同(同样
git grep->upload
),以至于
git
无法区分它被称为三者中的哪一个;传递给git的
main()
函数的C字符串列表在每种情况下都是完全相同的。包括错误消息是很好的建议,这是git失败的一个例子。在2.14.1中,此特定错误会生成65行错误消息,其中只有1行有用。如果您的终端少于65行,则一条有用的错误消息已从tty顶部滚动。请注意常见的解决方案:
git grep--\>upload
使用两个连字符表示选项结束是一种常见的习惯用法。@williampersell。这很令人恼火,因为我已经忘记了;在这种情况下,我更喜欢
-e
而不是
--
,因为它更明确、更具表现力:这意味着下一个字符串是要匹配的模式,可以将其与文件名(例如
--
之后的另一种合法数据)区分开来。
git grep -F -- '->upload'