How do we exclude Notes added by 'git notes add'
from git log
?
When we run git log --all
, there are millions of lines with Notes added by 'git notes add'
. We need --all to see everything else. We just don't want the commits that add the notes. However, we do want to see the actual notes itself that was attached to commits.
There's probably a duplicate question somewhere out there but I've search for over 8 hours and still can't find one.
For example: git log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset) %C(red)%N %C(reset)' --all
displays the following (where Tested
is the notes):
- 1b15b8e - (3 hours ago) Notes added by 'git notes add' - maker2
- 06b1158 - (2 hours ago) Fixed bug #37 - maker2
Tested
We actually want:
- 06b1158 - (2 hours ago) Fixed bug #37 - maker2
Tested
We don't want:
- 1b15b8e - (3 hours ago) Notes added by 'git notes add' - maker2
Using --no-notes actually produces the following, which is NOT the output we want:
- 1b15b8e - (3 hours ago) Notes added by 'git notes add' - maker2 %N
- 06b1158 - (2 hours ago) Fixed bug #37 - maker2 %N
Git version is 1.7.1
The current work around we have is to use | grep -v 'Notes added by' | less -r
but the output now gets colored strangely with the graph lines are displayed in rainbow colors for some reason.
CodePudding user response:
Try git log --no-notes
from git log documentation
EDIT
As it looks like, this option no longer available git log --no-standard-notes
. So there is no other opportunity to remove "Notes added by 'git notes add'"
with grep
. That the color not changed, you need --color=never
in the grep
command.
CodePudding user response:
The solution seems to be to just grep
out the unwanted lines and sed
out the unwanted colors. Basically appending the git log
with | grep -v 'Notes added by' | sed -e 's/^|/\x1b[m|/g' -e 's/^\*/\x1b[m\*/g' | less -R
The full command line:
git log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset) %C(red)%N %C(reset)' --all | grep -v 'Notes added by' |
sed -e 's/^|/\x1b[m|/g' -e 's/^\*/\x1b[m\*/g' | less -R
grep -v 'Notes added by'
removes the lines containing the notes commit.
sed -e 's/^|/\x1b[m|/g' -e 's/^\*/\x1b[m\*/g'
prefixes the first |
or *
in the line with the ANSI escape code to reset colors
less -R
displays the out with colors and correct line width.