lab 10 History
Goals
- Learn how to view the history of the project.
Getting a listing of what changes have been made is the function of the git log
command.
Execute:
git log
You should see …
Output:
$ git log commit 1f7ec5eaa8f37c2770dae3b984c55a1531fcc9e7 Author: Jim Weirich <jim (at) neo.com> Date: Sat Apr 13 15:20:42 2013 -0400 Added a comment commit 582495ae59ca91bca156a3372a72f88f6261698b Author: Jim Weirich <jim (at) neo.com> Date: Sat Apr 13 15:20:42 2013 -0400 Added a default value commit 323e28d99a07d404c04f27eb6e415d4b8ab1d615 Author: Jim Weirich <jim (at) neo.com> Date: Sat Apr 13 15:20:42 2013 -0400 Using ARGV commit 94164160adf8faa3119b409fcfcd13d0a0eb8020 Author: Jim Weirich <jim (at) neo.com> Date: Sat Apr 13 15:20:42 2013 -0400 First Commit
Here is a list of all four commits that we have made to the repository so far.
One Line Histories 01
You have a great deal of control over exactly what the log
command displays. I like the one line format:
Execute:
git log --pretty=oneline
You should see …
Output:
$ git log --pretty=oneline 1f7ec5eaa8f37c2770dae3b984c55a1531fcc9e7 Added a comment 582495ae59ca91bca156a3372a72f88f6261698b Added a default value 323e28d99a07d404c04f27eb6e415d4b8ab1d615 Using ARGV 94164160adf8faa3119b409fcfcd13d0a0eb8020 First Commit
Controlling Which Entries are Displayed 02
There are a lot of options for selecting which entries are displayed in the log. Play around with the following options:
git log --pretty=oneline --max-count=2 git log --pretty=oneline --since='5 minutes ago' git log --pretty=oneline --until='5 minutes ago' git log --pretty=oneline --author=<your name> git log --pretty=oneline --all
See man git-log for all the details.
Getting Fancy 03
Here’s what I use to review the changes made in the last week. I’ll add --author=jim
if I only want to see changes I made.
git log --all --pretty=format:'%h %cd %s (%an)' --since='7 days ago'
The Ultimate Log Format 04
Over time, I’ve decided that I like the following log format for most of my work.
Execute:
git log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short
It looks like this:
Output:
$ git log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short * 1f7ec5e 2013-04-13 | Added a comment (HEAD, master) [Jim Weirich] * 582495a 2013-04-13 | Added a default value [Jim Weirich] * 323e28d 2013-04-13 | Using ARGV [Jim Weirich] * 9416416 2013-04-13 | First Commit [Jim Weirich]
Let’s look at it in detail:
--pretty="..."
defines the format of the output.%h
is the abbreviated hash of the commit%d
are any decorations on that commit (e.g. branch heads or tags)%ad
is the author date%s
is the comment%an
is the author name--graph
informs git to display the commit tree in an ASCII graph layout--date=short
keeps the date format nice and short
This is a lot to type every time you want to see the log. Fortunately we will learn about git aliases in the next lab.
Other Tools 05
Both gitx
(for Macs) and gitk
(any platform) are useful in exploring log history.