亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何grep Git為某個單詞提交差異或內容?

如何grep Git為某個單詞提交差異或內容?

Git
肥皂起泡泡 2019-08-23 14:25:05
如何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, &regmatch, 0);...-    hit = !regexec(regexp, mf2.ptr, 1, &regmatch, 0);

雖然git log -G"regexec\(regexp"會顯示此提交,但git log -S"regexec\(regexp" --pickaxe-regex不會(因為該字符串的出現次數沒有改變)。


查看完整回答
反對 回復 2019-08-23
?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

git log的鎬會發現包含“單詞”的更改 git log -Sword


查看完整回答
反對 回復 2019-08-23
?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

經過大量的實驗,我可以推薦以下內容,它顯示引入或刪除包含給定正則表達式的行的提交,并在每個中顯示文本更改,顏色顯示添加和刪除的單詞。

git log --pickaxe-regex -p --color-words -S "<regexp to search for>"

需要一段時間才能運行... ;-)


查看完整回答
反對 回復 2019-08-23
  • 3 回答
  • 0 關注
  • 525 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號