Git Grep 显示绝对路径

4

我想从代码仓库外部使用git grep,例如在vim中编辑文件。以下是有效的方法:

git -C /path/to/gitrepo/ grep 'my search'

问题在于结果显示的是相对路径,从 /path/to/gitrepo 开始。因此,我不能直接打开它们。
有没有办法生成匹配项的完整文件路径?从 git 会很好,但也可以使用一个 hacky 解决方案来添加前缀并构建绝对路径。

1
通常的输出只有每个匹配一行(尽管这取决于选项)。在这种情况下,一个简单的 git -C $path grep pattern | sed s,^,$path, 就可以解决问题(假设路径中没有“,”)。 - torek
1
这样做可以实现每个匹配一行。谢谢。 - phcerdan
2个回答

2
通常的输出只是每个匹配项占据一行(尽管这取决于选项)。在这种情况下,一个简单的git -C $path grep pattern | sed s,^,$path,就可以解决问题(假设路径中没有“,”符号)。 - torek

1
[alias]
        egrep = "!f1() { git grep --line-number \"$1\" | sed \"s,^,$PWD/,g\"  | sed \"s/^\\(.*:[0-9]\\{1,10\\}\\):/\\1 /g\" ; }; f1"

这是我的git别名配置。
使用方法:git egrep 'my search' .
这将给出带有完整路径和行号的文件名。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接