簡體   English   中英

過濾 Git 日志以查找不包含特定單詞的提交

[英]Filter Git log for commits that don't contain a specific word

如何過濾不包含特定單詞的提交的 git 日志?

我查看了 regexp 站點,並在 Git Bash 中嘗試了一些沒有成功的案例。

您可以使用git log --grep="<your string>"結合--invert-grep參數來反轉搜索條件(從 Git for Windows 2.6.2 開始)。

例子:

查找提交消息包含字符串foo的提交:

git log --grep="foo"

查找提交消息不包含字符串foo的提交:

git log --invert-grep --grep="foo"

正如克勞迪烏所提到

一般來說,編寫不包含特定字符串的正則表達式是很痛苦的。 對於計算模型,我們必須這樣做——你使用一個很容易定義的 NFA,然后將其簡化為正則表達式。 不包含“cat”的事物的表達大約有 80 個字符長。

你可以用相反的方式來做,不優雅,但工作方式

git log ... | grep -v "someword"

PS - RE 中的否定是 ^ 前綴,它(前綴用法)可能需要 -E(擴展正則表達式)用於git log ,但是將否定詞定義為正則表達式的只是真正的噩夢

您只能以這種方式搜索提交消息,這是通過在簽入中使用-m標志提交代碼來完成的。 例子:

commit -m "message describing awesome code changes"

這將在日志中保存消息"message describing awesome code changes"的消息"message describing awesome code changes" ,這意味着搜索單詞awesome ,例如,現在將返回此結果。

您正在搜索的短語/單詞/消息是否可能從未包含在提交消息中?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM