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.
This question is related to
git
version-control
formatting
logging
commit-message
If you don't want hashes and just the first lines (subject lines):
git log --pretty=format:%s
git log --format="%H" -n 1
Use the above command to get the commitid, hope this helps.
Does git log --oneline
do what you want?
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.
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
Output
git lg
Output changed lines
git lg -p
Alternatively (recommended)
Paste this code to global .gitconfig file
[alias]
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
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/
if you want to always use git log
in such way you could add git alias by
git config --global alias.log log --oneline
after that git log
will print what normally would be printed by git log --oneline
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).
Without commit messages, only the hash:
git log --pretty=oneline | awk '{print $1}'
if you only want the first line of the messages (the subject):
git log --pretty=format:"%s"
and if you want all the messages on this branch going back to master:
git log --pretty=format:"%s" master..HEAD
Last but not least, if you want to add little bullets for quick markdown release notes:
git log --pretty=format:"- %s" master..HEAD
Source: Stackoverflow.com