特定の単語を含まないコミットの git ログをフィルタリングするにはどうすればよいですか?
私は正規表現サイトを見て、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 を取得し、それを正規表現に変換します。「猫」を含まないものの表現は、約 80 文字の長さでした。
エレガントではなく、機能する方法で逆に行うことができます
git log ... | grep -v "someword"
PS - RE の否定は ^ 接頭辞です。(接頭辞の使用法) には -E (拡張正規表現) が必要な場合がありますが、否定された単語を正規表現の単語としてgit log
定義することは、本当の悪夢です。
この方法でのみコミット メッセージを検索できます。これは-m
、チェックインでフラグを使用してコードを送信することによって行われます。例:
commit -m "message describing awesome code changes"
これにより、メッセージがログに保存されます。つまり、たとえば"message describing awesome code changes"
単語 を検索するとawesome
、結果としてこれが返されます。
検索しているフレーズ/単語/メッセージがコミット メッセージに含まれていない可能性はありますか?