I really like the short git log format where I can see author, date and change description like this:
git log --pretty=format:"%h%x09%an%x09%ad%x09%s"
Which outputs:
fbc3503 mads Thu Dec 4 07:43:27 2008 +0000 show mobile if phone is null...
ec36490 jesper Wed Nov 26 05:41:37 2008 +0000 Cleanup after [942]: Using timezon
ae62afd tobias Tue Nov 25 21:42:55 2008 +0000 Fixed #67 by adding time zone supp
164be7e mads Tue Nov 25 19:56:43 2008 +0000 fixed tests, and a 'unending appoi
(from stackoverflow question "link text")
Now, the question is, how do I save this as a new format on my machine so I only have to write something like, for instance:
git log --format=jespers_favourite
-
I have fixed the answer, after your comment.VonC– VonC2009年09月18日 10:33:37 +00:00Commented Sep 18, 2009 at 10:33
4 Answers 4
In newer versions of Git (confirmed with v1.7.8) it is possible to set named pretty-print log formats using git config pretty.named_format. These can be set at a machine-wide, user or file level with the <file-option> argument.
To create a log format called jespers_favourite or the whole machine use --system
git config --system pretty.jespers_favourite "%h%x09%an%x09%ad%x09%s"
For single user use '--global'
git config --global pretty.jespers_favourite "%h%x09%an%x09%ad%x09%s"
Leaving the <file-option> argument blank will default to setting the config file of the current repository, .git/config unless defined otherwise.
1 Comment
Considering the git log manual page mentions:
--pretty[=<format>]
--format[=<format>]
Pretty-print the contents of the commit logs in a given format, where can be one of oneline, short, medium, full, fuller, email, raw and format:. When omitted, the format defaults to medium.
the <format> can only have predefined values.
That only leaves you the possibility to define an alias as a shortcut for that command.
[alias]
jespers_favourite = log --pretty=format:"%h%x09%an%x09%ad%x09%s"
or
[alias]
compactlog = log --pretty=format:"%h%x09%an%x09%ad%x09%s"
Rokit adds in the comments:
Escaping the quotes worked until I tried adding custom colors.
For that, I also had to add an additional set of regular quotes around the escaped ones, e.g.log --pretty=format:"\"%C(#9be3bc) %s\""
6 Comments
git config alias.xxx... commands? Not in the .config file itself?With recent versions of git (1.7... 2.21 here) you can change your default format to a named format or the format string. And while you're doing it you may as well add some PRETTY FORMATS auto colors. Also I find it easier to edit the file rather than use the commands; but I start with them to get the right config file format first, and then tinker.
The default is changed with:
git config --global --add format.pretty \
"%C(yellow)%h%Creset%x09%Cred%<(13)%an%Creset%x09%Cblue%ad%Creset%x09%s"
Resulting in the addition to your .gitconfig of:
[format]
pretty = %C(yellow)%h%Creset%x09%Cred%<(13)%an%Creset%x09%Cblue%ad%Creset%x09%s
It is, however, probably more useful to you to add a named format as mentioned in the later part of your question.
A named format is added with:
git config --global pretty.dateline \
"format:%C(yellow)%h%Creset%x09%Cred%<(13)%an%Creset%x09%Cblue%ad%Creset%x09%s"
Or by adding to your .gitconfig as:
[pretty]
dateline = format:%C(yellow)%h%Creset%x09%Cred%<(13)%an%Creset%x09%Cblue%ad%Creset%x09%s
Used in combination:
If you add both, you could make them read:
[pretty]
dateline = format:%C(yellow)%h%Creset%x09%Cred%<(13)%an%Creset%x09%Cblue%ad%Creset%x09%s
[format]
pretty = dateline
Caveats:
The difference in the format: prefix should be noted, and personally I like to leave the default pretty format as medium. As you know the %ad part can be modified by --date=relative or any of default, iso8601, local, raw, relative, rfc2822, short ; so I like to use it like:
git log -25 --pretty=dateline --date=short -- when/was/this/changed.txt
Comments
You can configure the default pretty format using git-config. From the git-config documentation:
format.pretty
The default pretty format for log/show/whatchanged command, See git-log(1), git-show(1), git-whatchanged(1).
For example:
git config --add format.pretty fuller
or original poster's desired format:
git config --add format.pretty "%h%x09%an%x09%ad%x09%s"
Like with other git config settings, format.pretty may be set at the global, system, or repository scope (default).