I am trying to customize the format for git log
. I want all commits to be shown in one line. Each line should only show the first line of the commit message.
I found out that git log --pretty=short
should do the trick but on my computer it shows the full log as git log
does (besides the time stamp).
Further, I tried to use the placeholders as defined in the man page. Though, I could not find a command to shorten the log message. I tried this line git log --pretty=format:'%h : %s'
which shows the shorted hash %h
and the full message %s
in one line.
I am using git version 1.7.3.1.msysgit.0
on Vista.
Maybe it has something to do with the way I write my commit messages. Here is an example:
Added some functionality.
+ Added print function in Foo class.
+ Added conversion from foo to baz.
So, with the example given I only want to be output Added some functionality.
prepended by the shortend hash.
You can define a global alias so you can invoke a short log in a more comfortable way:
git config --global alias.slog "log --pretty=oneline --abbrev-commit"
Then you can call it using
git slog
(it even works with autocompletion if you have it enabled).Better and easier git log by making an alias. Paste the code below to terminal just once for one session. Paste the code to zshrc or bash profile to make it persistant.
Output
Output changed lines
Alternatively (recommended)
Paste this code to global .gitconfig file
Further Reading.
https://coderwall.com/p/euwpig/a-better-git-log
Advanced Reading.
http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/
Have you tried this?
The problem is probably that you are missing an empty line after the first line. The command above usually works for me, but I just tested on a commit without empty second line. I got the same result as you: the whole message on one line.
Empty second line is a standard in git commit messages. The behaviour you see was probably implemented on purpose.
The first line of a commit message is meant to be a short description. If you cannot make it in a single line you can use several, but git considers everything before the first empty line to be the "short description".
oneline
prints the whole short description, so all your 3 rows.Does
git log --oneline
do what you want?if you want to always use
git log
in such way you could add git alias bygit config --global alias.log log --oneline
after that
git log
will print what normally would be printed bygit log --oneline
This will print out just the message (subject line only) without hash: