用 git grep -n 在仓库里快速找字符串

21 次浏览2 条回复

有时候只是想在已跟踪的代码里找一个函数名、配置项或者错误文案,不一定要先开 IDE 全局搜索。Git 自带的 grep 就够用了。

环境:Git 2.25+,在仓库根目录执行:

git grep -n "TODO"

-n 会带上行号,点进去改起来方便一点。只想搜某类文件也可以加路径限制:

git grep -n "createUser" -- '*.ts' '*.tsx'

它默认只搜 Git 管理的文件,所以 node_modules/、构建产物这类没进仓库的东西通常不会冒出来。

如果需要看当前分支某个历史版本里的内容,也能这样:

git grep -n "createUser" HEAD~1 -- '*.ts'

这个命令只读,不会改工作区。比较适合排查“这个名字到底在哪些地方被用过”。

补一个小用法:如果想搜的是固定字符串,不想让正则特殊字符掺和,可以加 -F。

git grep -nF "foo.bar(" -- '*.js'

查日志 key、错误码、带括号的函数片段时挺省心,少一点转义。

再补一个提交前挺实用的:想只查暂存区里的版本,可以加 --cached。

git grep --cached -n "createUser" -- '*.ts'

这样看到的是下一次提交会带进去的内容,不会被工作区里还没 git add 的改动干扰。