如何通过提交消息在存储库中找到git提交?

时间:2012-12-19 15:00:38

标签: git

我们最近将SVN存储库转换为GIT。似乎我们通过此转换丢失了一些提交,并希望验证这一点。

因此,我们希望为每个svn提交找到匹配的git提交,以检查转换是否确实发生过。

$ git log|grep "some partial commit message"是不够的,因为它只能通过直接的祖先并忽略不是直接祖先的分支。

$ git show <commit-hash>无效,因为svn没有sha1sums。

我发现最接近的是:$ git reflog show --all --grep="releasenotes"|xargs git show --shortstat然而这似乎并不完全有效,因为它似乎在更多的地方grep而不仅仅是提交消息(我们得到了误报)。

我也试过这个:$ git rev-list --all|xargs -n1 bash -c 'git show|head -n10'|grep -i release

基本上我没有一个很好的方法来打印没有差异的提交消息。

[编辑]

我不确定,但我想这应列出存储库中的所有提交消息。

git rev-list --all|xargs -n1 git log -n1

3 个答案:

答案 0 :(得分:12)

您可以使用--all

git log选项
git log --all --oneline --graph --decorate | grep "message"

相当于

git log --all --oneline --graph --decorate --grep "message"

或者,如果您希望拥有上下文并且没有很多提交,那么您可能希望执行类似

的操作
git log --all --oneline --graph --decorate | less
/ message

通过这种方式,您可以看到 您的提交与其他提交相关的内容。

答案 1 :(得分:7)

您可以使用git log--grep选项:

$ git log --all --grep=word

请参阅“How to grep git commits for a certain word”:这是为了抓取提交消息

答案 2 :(得分:1)

您也可以使用GUI。

gitk

它将打开一个GUI,然后在包含框中写下您的提交消息,然后按回车键。

它将以突出显示的方式显示所有匹配的提交。