2012-12-14 78 views

回答

11

使用git grep定位提交:

git grep "string" $(git rev-list --all) 

git rev-list --all使得搜索項目的整個歷史。

這將會給像這樣的輸出:

<commit>:<path>:<matched line> 

然後你可以使用git branch --contains找出提交哪個分支是:

git branch --contains <commit> 
+0

我可以指定僅搜索一個文件/路徑嗎? (例如,我正在尋找一個特定的燈具,只想搜索這個路徑) –

+1

是:'git grep「字符串」$(git rev-list --all) - path'。 – jszakmeister

+7

這對大歷史無效:( 'git grep'abc'echo $(git rev-list --all)' 'zsh:參數列表太長:git' – tback

1

git branch "branch-name"更改分支,然後在存儲庫根目錄中執行git grep "specific string"。如果你沒有太多的分支,這應該讓你快速到達。

1

如果上述git grep "string"變化給你「列表太長「的錯誤,你可以用git log -S代替。 -S選項搜索已提交的文件的內容:(更多在「臨Git的」書下"searching"

git log -Sstring # look for string in every file of every commit 
git log -Sstring -- path/to/file # only look at the history of the named file 

相關問題