Peter Stuge wrote:
HEAD means "the last commit on the current
"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.