我们最近将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
答案 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,然后在包含框中写下您的提交消息,然后按回车键。
它将以突出显示的方式显示所有匹配的提交。