I’ve written and commited the post My Git Command List (3),
but after a while, I changed that post. In order not to complexify
my Git commit history, I used
git commit --amend -a. That’s quite
simple and convenient. I observed that the displayed time in the
amended commit was the same as the original one, whereas the SHA-1
hash was changed so that Git knows that they’re different.
Git Object ID Generation (1): Blobs and Commits, I’ve learnt
that the ID of Git commit objects is totally determined by
- the content of the commit message
- the commit time
- the author
In this case, no difference of the above factors between the original
commit and the amended commit can be observed with
In what way do the original commit and the amended commit differ?
To solve this problem, I scrolled up the screen and captured the SHA-1 hashes fo the two commits.
- the original commit’s hash:
- the amended commit’s hash:
Note: I just make up the email address
firstname.lastname@example.org to replace
my real email address to avoid email spams. Therefore,
the above commit hashes don’t correspond to the content displayed
below. In fact, they correspond to the commits in the Git
repository for this blog.
$ git cat-file -p 9de8974b93a2e4032b608c0de17ea5ed0c55524b tree b9f4fb708327e25c8b1b822711ec7dda9c5b2198 parent afcb4d97cb447112bd2e930159966d92b8e4754a author Vincent Tam <email@example.com> 1438859683 +0800 committer Vincent Tam <firstname.lastname@example.org> 1438859683 +0800 A new post on some Git low level commands I *don't* go over the details of the book *Pro Git*, which is available online. I just select some important ones for quick reference. $ git cat-file -p 5b7b566b8a07d4813ba9f08a326e169cf38ca20f tree 2d864bcb7e4944e9d98b663649c79084692873c1 parent afcb4d97cb447112bd2e930159966d92b8e4754a author Vincent Tam <email@example.com> 1438859683 +0800 committer Vincent Tam <firstname.lastname@example.org> 1438864942 +0800 A new post on some Git low level commands I *don't* go over the details of the book *Pro Git*, which is available online. I just select some important ones for quick reference.
Hence, the difference of the timestamp of the
committer causes the
difference in the hashes, whereas the timestamp of the
converted to a human readable date for display.
A Unix timestamp is the number of seconds elasped since the start of the year 1970 in GMT.
A little bit kramdown syntax: EOB marker
According to kramdown’s syntax guide, the EOB marker won’t be found in most Markdown documents. In order to include a list followed by a code block that isn’t contained inside the list, the boundary of the list has to be specified by a line consisting of a leading ‘^’ character.