搜索Git远程所有分支中的文件内容

21

是否有可能在Git的所有远程分支中搜索特定文件内容(不仅是文件,而是其中的内容)?

我的远程分支托管在GitHub上,如果有帮助的话...

2个回答

29

你可以尝试这个:

git grep 'search-string' $(git ls-remote . 'refs/remotes/*' | cut -f 2)

这将搜索所有远程分支,以查找search-string。由于符号引用HEAD被镜像,您可能会搜索相同的提交两次。希望这不是问题。如果是,请使用以下命令过滤掉它:

git grep 'search-string' \
    $(git ls-remote . 'refs/remotes/*' | grep -v HEAD | cut -f 2)

如果您需要查看您的整个历史记录,您也可以尝试以下方法:

git grep 'search-string' $(git rev-list --all)

第二个命令对我有效,但第一个不行;我得到了“致命错误:在文件名后使用了不良标志'->'”。 - pattivacek
1
抱歉,我忘记了 git branch -r 会显示其中符号引用的内容。我已经更新了我的答案,提供了另一种可行但不太美观的方法。 - John Szakmeister

6
假设您正在跟踪所有远程分支,这将在所有提交中搜索它:
git log --all -p | grep 'search-string'

追踪所有远程分支:

for remote in `git branch -r`; do git branch --track $remote; done

学习中了解输出行的位置(分支/文件)有何帮助? - bloody

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