Peter Stuge wrote:
HEAD means "the last commit on the current branch"
"the last commit on the branch" is better, since HEAD is used to refer to other branches as well.
A tag is also a nickname for a commit, but tags must and do never change.
I lied. I should have written:
tags SHOULD never change.
It is possible to delete a tag, and create a new tag with the same name as the old one, but referencing a different commit. This should always be avoided however. If people can't trust tags to stay still then why use tags in the first place.
We generally avoid merge commits in coreboot
Merge commits are append-only and exactly preserve development history. Alert readers noticed that a rebase means that commits must change. This is frowned upon if someone has already seen the commits as they were before the rebase, but it is perfectly fine if they only exist locally.
The killer feature in git is "interactive rebase", which allows to rework any number of commits in any desirable way. It's very clever, and makes it very easy to clean up after some problems or mistakes.
//Peter