The summary.
VERSION CONTROL IS NOT A BACKUP BY ITSELF
A repository on one machine is lost with that machine. A copy held elsewhere is what makes it one.
CREATE THE IGNORE FILE BEFORE THE FIRST COMMIT
Once a secret is committed it remains in history permanently. Rotate anything that was.
MOST GIT CONFUSION COMES FROM NOT KNOWING WHICH AREA A COMMAND AFFECTS
Working directory, staging area, repository. Branches are cheap because they are pointers, not copies.
ONE LOGICAL CHANGE PER COMMIT
Never combine a behaviour change with reformatting — the real change becomes invisible.
The message is what someone reads years later, so explain why, not what the diff shows.
NEVER REBASE COMMITS OTHERS HAVE PULLED
Your own unshared branch is safe. And never force a push that discards others' work.
CONFLICTS GROW WITH DIVERGENCE AND TIME
Small changes, merged within days, and automatic formatting prevent most of them. Always build and test after resolving — a resolution can be valid and behaviourally wrong.
MOST ACCIDENTAL LOSSES ARE RECOVERABLE
Git retains references to apparently lost commits. Note the commit identifier before anything risky.