Git Grep存储库中的所有提交

Git Grep存储库中的所有提交,git,Git,我有一个相当大的软件项目的git存储库。我想在每个提交消息中搜索某个子字符串。我不只是寻找当前分支上的提交,而是寻找存储库知道的每个提交 结果不必按任何特定顺序排列(尽管如果有一些顺序,那就太好了)。这可能吗?我该怎么做呢?我看到“git log-c-S”很有用,但在当前的分支上,这似乎是可行的 任何建议或帮助将不胜感激 您可以使用$git log-g--grep=search\u来搜索这个。还有一些用于跟踪回购的GUI客户端。可以搜索所有分支中的提交。如果您想尝试GUI,可以查看repo 编辑

我有一个相当大的软件项目的git存储库。我想在每个提交消息中搜索某个子字符串。我不只是寻找当前分支上的提交,而是寻找存储库知道的每个提交

结果不必按任何特定顺序排列(尽管如果有一些顺序,那就太好了)。这可能吗?我该怎么做呢?我看到“git log-c-S”很有用,但在当前的分支上,这似乎是可行的


任何建议或帮助将不胜感激

您可以使用
$git log-g--grep=search\u来搜索这个
。还有一些用于跟踪回购的GUI客户端。可以搜索所有分支中的提交。如果您想尝试GUI,可以查看repo

编辑:我刚刚试过使用
--all
标志,效果也不错。你也可以使用

$ git log --all --grep=search_for_this
--all标志考虑本地存储库知道的每个分支:

git log --all --grep="substring"
要在提交日志(跨所有分支)中搜索给定文本,请执行以下操作:

git log --all --grep='Build 0051'
要通过回购历史记录搜索提交的实际内容,请使用:

git grep 'Build 0051' $(git rev-list --all)
显示给定文本、包含文件名和提交sha1的所有实例

最后,如果您的提交处于悬空状态并且根本没有连接到历史记录,那么作为最后一种手段,您可以使用
-g
标志(缩写为
--walk reflogs
)搜索reflog本身:

git log -g --grep='Build 0051'
编辑:如果您似乎丢失了历史记录,请检查
reflog
作为您的安全网。在

git reflog
您可能只是简单地将您的
标题设置为“build0051”提交不可见的历史记录的一部分,或者您实际上已经将它吹走了。本文可能会有所帮助

要从reflog恢复提交:对找到的提交进行git签出(并可选地创建一个新的分支或标记以供参考)

git checkout 77b1f718d19e5cf46e2fab8405a9a0859c9c2889
# alternative, using reflog (see git-ready link provided)
# git checkout HEAD@{10}
git checkout -b build_0051 # make a new branch with the build_0051 as the tip.