Here’s how I generally configure my GitHub repositories.
At some point I should automate this - I’m hoping that GitHub will add some cool .github/config.yaml
functionality and save me some work.
Until then, this is my checklist!
In Settings:
- Options
- Disable wikis because wikis are terrible for documentation
- Disable squash merging and rebase merging - I want merge commits
- Enable automatically deleting head branches - it’s easy to forget to do so manually
- Branches
- Protect
main
- Require status checks to pass before merging - I want to make sure my changes don’t break things
- Require branches to be up to date before merging - when combined with merge commits this gives me a nice clean history that preserves the individual history of branches (unlike squash commits) while making sure they’re applied in a single (merge) commit
- Include administrators - because that’s usually me, these settings are for my own benefit, and GitHub still helpfully gives me an override button if I really need it
- Disallow force pushes - on unmerged branches great, but I generally don’t want this on
main
!
- Protect