在所有git分支中搜索文件

bgc*_*ode 27 git grep

如何在项目的所有git分支中搜索文件名?我记得文件名的一部分(只是结尾),所以我希望能够搜索*_robot.php所有分支的内容,并查看哪些文件匹配.我最好喜欢搜索历史记录,而不仅仅是分支机构的HEAD.

man*_*lds 30

这是一种方式:

git log --all --name-only --pretty=format: | sort -u | grep _robot.php
Run Code Online (Sandbox Code Playgroud)

  • git log --all --name-only --pretty=format:'%H %f' | git log --all --name-only --pretty=format:'%H %f' | grep _robot.php -B 10 (2认同)

Eri*_*got 7

以下是@ manojlds解决方案的一个更简单的变体:git确实可以直接考虑所有的branches(--all),打印修改后的文件的名称(--name-only),只有这些名称(--pretty=format:).但是git也可以通过在--分隔符之后放置文件名正则表达式来首先过滤某些文件名(正则表达式):

git log --all --name-only --pretty=format: -- <file_name_regexp> | sort -u
Run Code Online (Sandbox Code Playgroud)

所以,你可以直接做:

git log --all --name-only --pretty=format: -- _robot.php | sort -u
Run Code Online (Sandbox Code Playgroud)

  • 例如,您可以执行`git log --all --name-only --pretty = format:%H - <file_name_regexp> | less`并查找您感兴趣的文件名(通过在`less`中键入`/`):修改后的文件的名称前面是其修订版哈希.(然后你做通常的`git checkout <revision>`来查看文件.) (3认同)