我正在寻找一种可以让我搜索整个 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
遍历一系列提交、从当前提交回溯到父提交的所有提交,或者遍历整个仓库中的所有提交。请参阅该答案以了解更多详细信息和其他选项和场景。