Reputation: 18627
I can display files changed in a commit using --name-only
option. What format param should I use in order to have this file list appear as bold green?
git log --pretty=format:"%ad %Cblue[%an]%Creset %C(red bold)%s%d%Creset %h" --date=short --name-only
Upvotes: 5
Views: 365
Reputation: 142652
You will have to use your own git log --pretty=format
options.
In the --pretty
you can set colors and choose any content you would like to display
format:<string>
The format: format allows you to specify which information you want to show. It works a little bit like printf format, with the notable exception that you get a newline with %n instead of \n.
E.g, format:
The author of %h was %an, %ar%nThe title was >>%s<<%n
would show something like this:
The author of fe6e0ee was Junio C Hamano, 23 hours ago
The title was >>t4119: test autocomputing -p<n> for traditional diff input.<<
The placeholders are
:
%C(…):
color specification, as described in color.branch.* config option; adding auto, at the beginning will emit color only when colors are enabled for log output (by color.diff, color.ui, or --color, and respecting the auto settings of the former if we are going to a terminal). auto alone (i.e. %C(auto)) will turn on auto coloring on the next placeholders until the color is switched again.
%C(…):
color specification, as described in color.branch.* config option; adding auto, at the beginning will emit color only when colors are enabled for log output (by color.diff, color.ui, or --color, and respecting the auto settings of the former if we are going to a terminal). auto alone (i.e. %C(auto)) will turn on auto coloring on the next placeholders until the color is switched again.
%Cblue:
switch color to blue
%Cgreen:
switch color to green
%Cred:
switch color to red
%Creset:
reset color
%D:
ref names without the " (", ")" wrapping.
%G?:
show "G" for a Good signature, "B" for a Bad signature, "U" for a good, untrusted signature and "N" for no signature
%GG:
raw verification message from GPG for a signed commit
%GK:
show the key used to sign a signed commit
%GS:
show the name of the signer for a signed commit
%H:
commit hash
%N:
commit notes
%P:
parent hashes
%T:
tree hash
%aD:
author date, RFC2822 style
%aE:
author email (respecting .mailmap, see git-shortlog(1) or git-blame(1))
%aI:
author date, strict ISO 8601 format
%aN:
author name (respecting .mailmap, see git-shortlog(1) or git-blame(1))
%ad:
author date (format respects --date= option)
%ae:
author email
%ai:
author date, ISO 8601-like format
%an:
author name
%ar:
author date, relative
%at:
author date, UNIX timestamp
%b:
body
%cD:
committer date, RFC2822 style
%cE:
committer email (respecting .mailmap, see git-shortlog(1) or git-blame(1))
%cI:
committer date, strict ISO 8601 format
%cN:
committer name (respecting .mailmap, see git-shortlog(1) or git-blame(1))
%cd:
committer date (format respects --date= option)
%ce:
committer email
%ci:
committer date, ISO 8601-like format
%cn:
committer name
%cr:
committer date, relative
%ct:
committer date, UNIX timestamp
%d:
ref names, like the --decorate option of git-log(1)
%e:
encoding
%f:
sanitized subject line, suitable for a filename
%gD:
reflog selector, e.g., refs/stash@{1}
%gE:
reflog identity email (respecting .mailmap, see git-shortlog(1) or git-blame(1))
%gN:
reflog identity name (respecting .mailmap, see git-shortlog(1) or git-blame(1))
%gd:
shortened reflog selector, e.g., stash@{1}
%ge:
reflog identity email
%gn:
reflog identity name
%gs:
reflog subject
%h:
abbreviated commit hash
%m:
left, right or boundary mark
%n:
newline
%p:
abbreviated parent hashes
%s:
subject
%t:
abbreviated tree hash
%w([<w>[,<i1>[,<i2>]]]):
switch line wrapping, like the -w option of git-shortlog(1).
%x00:
print a byte from a hex code
Upvotes: 2
Reputation: 7659
Assuming you don't have files starting with #:
BWhite=$'\e[1;37m' # bold white, or use any other color you want
ColorOff=$'\e[0m'
git log --pretty=format:"#%ad %Cblue[%an]%Creset %C(red bold)%s%d%Creset %Cgreen%h%Creset" --date=short --name-only | sed "s/^\([^#].*\)/${BWhite}\1${ColorOff}/" | xargs -d '#' echo -e
Explanation: I wrap the lines that contain filenames with colors using sed, as explained here. You can also encapsulate this code in a function and add it as a git alias.
Upvotes: 1