搜索整个 Git 存储库

搜索整个 Git 存储库

我正在寻找一种可以让我搜索整个 Git 存储库(所有分支)的工具。理想情况下,该工具将采用某种搜索模式,并返回出现该模式的提交对象列表(在文件差异中或在提交消息中 [我更感兴趣的是在提交消息中搜索模式,而不是在文件中])。

答案1

要搜索提交消息,请使用git log --grep <regex> [branches]

用于搜索提交差异, 使用git log -G <regex> [branches]

要指定所有现有的本地分支,请使用--all代替分支名称。

如果您只想要哈希列表,请使用--format=%H

答案2

git grep整个存储库:即:全部整个仓库中的提交(和分支)

用来代替分支名称或提交哈希,并执行以下操作在所有提交和分支中--all搜索:"search string"

IFS=$'\n' read -r -d '' -a commit_array <<< \
    "$(git log --pretty=format:"%H" --all)"; \
    git grep -n "search string" "${commit_array[@]}"

我的例子eRCaGuy_hello_world回购:

IFS=$'\n' read -r -d '' -a commit_array <<< \
    "$(git log --pretty=format:"%H" --all)"; \
    git grep -n "\bhey\b" "${commit_array[@]}"

我最初在这里写过这篇文章:Stack Overflow:如何git grep遍历一系列提交、从当前提交回溯到父提交的所有提交,或者遍历整个仓库中的所有提交。请参阅该答案以了解更多详细信息和其他选项和场景。

相关内容