如何grep Git為某個單詞提交差異或內容?在Git代碼庫中,我想列出包含特定單詞的所有提交。我試過這個git log -p | grep --context=4 "word"但它并不一定會給我回文件名(除非它比我搜索的單詞少了5行。我也嘗試過git grep "word"但它只給我現在的文件,而不是歷史。如何搜索整個歷史記錄以便我可以跟蹤特定單詞的更改?我的意思是在我的代碼庫中搜索單詞的出現以跟蹤更改(在文件歷史記錄中搜索)。
3 回答

小唯快跑啊
TA貢獻1863條經驗 獲得超2個贊
如果要查找提交消息包含給定單詞的所有提交,請使用
$ git log --grep=word
如果你想找到所有在文件內容中添加或刪除“word”的提交(更確切地說:“word”的出現次數發生變化),即搜索提交內容,使用所謂的'pickaxe'搜索
$ git log -Sword
在現代的git中也有
$ git log -Gword
查找添加或刪除的行與“word”匹配的差異(也是提交內容)。
請注意,-G
默認情況下接受正則表達式,同時-S
接受字符串,但可以修改為接受正則表達式使用--pickaxe-regex
。
為了說明之間的區別
-S<regex> --pickaxe-regex
,并-G<regex>
考慮在同一個文件中的以下DIFF提交:+ return !regexec(regexp, two->ptr, 1, ®match, 0);...- hit = !regexec(regexp, mf2.ptr, 1, ®match, 0);雖然
git log -G"regexec\(regexp"
會顯示此提交,但git log -S"regexec\(regexp" --pickaxe-regex
不會(因為該字符串的出現次數沒有改變)。

Cats萌萌
TA貢獻1805條經驗 獲得超9個贊
經過大量的實驗,我可以推薦以下內容,它顯示引入或刪除包含給定正則表達式的行的提交,并在每個中顯示文本更改,顏色顯示添加和刪除的單詞。
git log --pickaxe-regex -p --color-words -S "<regexp to search for>"
需要一段時間才能運行... ;-)
- 3 回答
- 0 關注
- 525 瀏覽
添加回答
舉報
0/150
提交
取消