我想在仓库外使用git grep,例如在vim中编辑一个文件。
git -C /path/to/gitrepo/ grep 'my search'
问题是结果显示的是/path/to/gitrepo的相对路径。所以,我不能直接打开它们。有没有办法生成匹配的完整文件路径?从git可能很好,但是一个预先规划和构建绝对路径的hacky解决方案也可以。
/path/to/gitrepo
git
cunj1qz11#
通常的输出是每个匹配只显示一行(尽管这取决于选项)。在这种情况下,一个简单的git -C $path grep pattern | sed s,^,$path,就可以完成这个任务(假设路径中没有“,”)。- torek
git -C $path grep pattern | sed s,^,$path,
o2g1uqev2#
[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'。这会给予你一个包含完整路径和行号的文件名。
2条答案
按热度按时间cunj1qz11#
通常的输出是每个匹配只显示一行(尽管这取决于选项)。在这种情况下,一个简单的
git -C $path grep pattern | sed s,^,$path,
就可以完成这个任务(假设路径中没有“,”)。- toreko2g1uqev2#
这是我的git别名配置。
用法:git egrep 'my search'。这会给予你一个包含完整路径和行号的文件名。