Can 'git log' ignore certain commits based on commit message?
Asked Answered
C

1

18

I'm using git log in order to generate a diff between two branches. The exact command I'm using is:

git log --left-right --graph --cherry-pick --oneline sourceBranch...targetBranch

What I'm wondering is if I can exclude some of the log entries based on the commit message. For example, all of the commits by our test automation team contain a certain identifier, we'll call it TEST_AUTO. Currently, the output from my diff looks like this:

>   1e31b8x Merge pull request #1225 in base/project from feature/ABCD-1111 to master
|\  
| > b2f0dfx [ABCD-1111] rework help tour // fixes
| > 270072x [ABCD-1111] rework help tour // merge fixes
| > 98ffeax [ABCD-1111] rework help tour // merge fixes
| >   ff2e25x Merge branch 'master' into feature/ABCD-1111-rework-help-tour
| |\  
| > | f0daf2x [ABCD-1111] rework help tour // new menu
| > | c519a2x [ABCD-1111] rework help tour
| > | 6873cax [ABCD-1111] rework help tour // animations
| > | 944cc7x [ABCD-1111] rework help tour // fix phone fullscreen
| > | 72b3ffx [ABCD-1111] rework help tour // phone animations
| > | 7f7c50x [ABCD-1111] rework help tour // base logic
| > | b6dccex [ABCD-1111] rework help tour
| > | a30022x [ABCD-1111] rework help tour // code clean up and new icons
> | |   c0a3e1x Merge pull request #11361 in base/project from TEST_AUTO-123-bring-automation-code-to to master
|\ \ \  
| |_|/  
|/| |   
| > | 9837a4x [TEST_AUTO-123] Bring Android automation code to 123.X version
| > | 41b33cx Merge branch 'feature/automation' into TEST_AUTO-951-bring-automation-code-to
| > |   bb53f6x Merge branch 'feature/automation' into TEST_AUTO-951-bring-automation-code-to
| |\ \  
| | > | aa1a90x [TEST_AUTO-123] Bring Android automation code to 123.X version
| | > |   876ee8ex Merge pull request #12261 in base/project from bugfix/TEST_AUTO-789-android-fix to feature/automation
| | |\ \ \  
| | | > | | ef3fa1x [TEST_AUTO-456] fixed test_508()
| | | > | | a2d352x [TEST_AUTO-456] fixed test_186 and moved to PortfolioTest
| | | > | | 1880b0x [TEST_AUTO-456] small fix test_493
| | | > | | facc13x [TEST_AUTO-456] fixed test_493
| | | > | | 9ebce6x [TEST_AUTO-456] fix test_31734 (test_493)
| | | > | | 128890x [TEST_AUTO-456] fix test_31621 (test_384) and moved to common/MediaTest
| | | > | | ab64b8x [TEST_AUTO-456] fix test_498()
| | | > | | 7935aax [TEST_AUTO-456] fix test_31740 (test_498) (not ready)
| | | > | | ffb930x [TEST_AUTO-456]fixed test_31751 (test_508) and moved to common/SideMenuTest
| | | | > |   2b810ax Merge remote-tracking branch 'remotes/origin/feature/automation' into bugfix/TEST_AUTO-789-android-fix

These generate a lot of log noise that I'm not interested in.

Ideally, I'd like to exclude any commits from the compare that contain this TEST_AUTO string. I've tried piping the above command to 'grep -v' but that just eliminates the lines that contain it (obviously) and leaves weird gaps in the tree. I want to prevent them from being included at all.

Capstone answered 2/11, 2017 at 17:47 Comment(3)
Have you tried --invert-grep?Boney
Yeah, use --grep=<pattern> with --invert-grep.Outburst
Didn't see the --invert-grep option, but it worked perfectly. If you post it as an answer I will accept it. Thanks!Capstone
G
30

git log --invert-grep --grep=TEST_AUTO

from man git log:

   --invert-grep
       Limit the commits output to ones with log message that do not match the pattern specified with --grep=<pattern>.
Gilletta answered 2/11, 2017 at 17:53 Comment(2)
Works for --author too.Johnie
I expected this to only invert the grep (not invert the author), but the behavior changed very recently. You need git 2.35 or newer for this to not invert --authorEmbroidery

© 2022 - 2024 — McMap. All rights reserved.