Overview
What makes a good Git commit?
Links:
Any other good ones?
Properties of a good Git commit (sort of subjective)
- Subject (first) line (followed by blank line):
- 60 char max (including subsystem name) for
git log --oneline
).
8c7ae38d1ce1 afs: Fix StoreData op marshalling 7d6ab823d646 vfs: Update mount API docs b6ffdf27f3d4 s390/cpumf: Fix warning from check_processor_id 01f2f5b82a2b SUNRPC: fix uninitialized variable warning 8c838f53e149 dpaa2-eth: fix race condition with bql frame accounting 047a013f8d0a chelsio: use BUG() instead of BUG_ON(1)
- Be accurate; the subject must describe the actual commit.
- Use the imperative mood (“Fix”, “Adjust”, “Correct”).
- Don't capitalize the first word.
- No ending period.
- Is this changing functionality, or just fixing docs/comments.
- Commits themselves:
- Well-defined and modular, for future cherry picking or reverting.
- Complete; use
git commit --amend
to assure this. - Commit messages:
- What is being changed, what functionality is being affected (if any).
- Why it is being changed.
- References to discussions about this commit (people, mailing lists).
- Level of testing this commit has had.
- Names of others who have ACKed/tested/reviewed this commit.
- References to bug tracker items (JIRA) this commit is addressing.
Some examples
U-Boot
$ git show --summary 6ff005cf19363382fc867d7876a75fd8a386e894 commit 6ff005cf19363382fc867d7876a75fd8a386e894 Author: Dave Prue <dave@prue.com> Date: Thu Aug 31 19:21:01 2017 +0200 sunxi: Fix CONFIG_SUNXI_GMAC references SUNXI_GMAC was still used to configure the code where as the same has been renamed and moved to Kconfig in below commit "sunxi: Move SUNXI_GMAC to Kconfig" (sha1: 4d43d065db3262f9a9918ba72457bf36dfb8e0bb) Signed-off-by: Dave Prue <dave@prue.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Jagan Teki <jagan@openedev.com> Reviewed-by: Mark Kettenis <kettenis@openbsd.org> Tested-by: Mark Kettenis <kettenis@openbsd.org> [Tweek commit message, config_whitelist.txt, build-whitelist.sh] Signed-off-by: Jagan Teki <jagan@openedev.com>