7

我们最近将我们的 SVN 存储库转换为 GIT。看来我们通过这种转换丢失了一些提交,并想验证这一点。

所以我们想为每个 svn commit 找到一个匹配的 git commit 来检查转换是否真的发生了。

$ 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
4

3 回答 3

14

您可以只使用该--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

这样你就可以看到的提交相对于其他提交的位置。

于 2012-12-19T15:09:40.460 回答
8

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

$ git log --all --grep=word

请参阅“如何 grep git commits for a certain word ”:这是用于 grep 提交消息

于 2012-12-19T15:12:58.123 回答
1

您也可以使用图形用户界面。

gitk

它将打开一个 GUI,然后将您的提交消息写入包含框,然后按 Enter 键。

它将显示所有匹配的提交并突出显示。

于 2012-12-19T15:35:03.990 回答