2012-12-19 130 views
5

我們最近將我們的SVN倉庫轉換爲GIT。我們似乎通過這種轉換失去了一些提交,並想驗證這一點。如何通過提交消息找到git提交倉庫?

所以我們希望爲每個svn提交找到一個匹配的git commit來檢查轉換是否實際發生。

$ git log|grep "some partial commit message"不能滿足,因爲它只走過直接ancenstors並忽略不直接祖先的分支。

$ 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

基本上我缺少一個很好的方法來打印照片,無需製作diff提交信息。

[編輯]

我不能完全肯定,但我想這應該列出所有在庫提交信息。

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

閱讀git-log的幫助頁將有所幫助:您可以使用類似'git log --all --format = | grep ',其中''將會像「SHA - commit message」一樣,詳見手冊頁 –

回答

11

您可以只使用git log

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

--all選項,這相當於

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

或者,如果你希望有上下文,並沒有很多提交你可能想要做類似

git log --all --oneline --graph --decorate | less 
/message 

這樣你可以看到其中你的提交是相對於其他提交。

+0

比我的更完整的答案。 +1 – VonC

0

您也可以使用GUI。

gitk 

它會打開一個GUI,然後在含有箱寫你的提交信息,然後按Enter鍵。

它會以高亮顯示所有匹配的提交。