The summary.
SET UP THE IGNORE FILE BEFORE THE FIRST COMMIT
Once a secret is committed it remains in history. Removing it does not help — rotate it and assume it is compromised.
Scan the repository automatically. Secrets are committed accidentally more often than anyone expects.
ONE LOGICAL CHANGE PER COMMIT
Never combine a behaviour change with a formatting change — the real change becomes invisible among reformatted lines.
The code shows what changed. Only the message can explain why.
KEEP BRANCHES SHORT-LIVED AND THE MAIN BRANCH DEPLOYABLE
Long-running branches diverge and merging becomes painful.
AUTOMATE FORMATTING AND CHECKS BEFORE REVIEW
So review addresses what only a person can judge. Small changes get real review; large ones get a cursory one.
VERSION YOUR DATABASE TOO
Every structural change as a migration, committed alongside the code. Never modify one that has already run in production.
TAG RELEASES AND RECORD WHAT IS DEPLOYED
Including any manual steps performed — those are forgotten, and their absence causes failures later.
Show the running version somewhere accessible, so you never have to guess.