githubEdit

Git

Controlling version control.

We use Git for version control and use Conventional Commitsarrow-up-right for branch names and commit messages to enforce consistency and enjoy automatic changelog generation.

Branches

Use short and descriptive, kebab-cased names with a conventional commits type prefix separated by a slash, like so:

  • feat/implement-arbitrator

  • fix/invalid-rulings-from-arbitrator

When several people are working on a branch, you may create personal branches that can be merged before merging the main branch to develop. For example:

  • feat/implement-arbitrator/alice

  • feat/implement-arbitrator/bob

circle-info

Always delete merged branches, locally and remotely. You can use the following command to list them, git branch --merged | grep -v "\*".

Commits

It's important for commits to follow a standard to allow efficient navigation of change history in the case of regressions and to make reviewers' lives easier.

When to Commit

As a general guideline, each commit should be a single logical change. Don't make several logical changes in one commit. For example, if a commit fixes a bug and optimizes the performance of a feature, split it. Here are some useful tips:

  • Use git add -p to interactively stage specific portions of modified files.

  • Commit early and often. Small, self-contained commits are easier to understand and revert when something goes wrong.

  • Order commits logically.

When working locally, it's OK if your branch history is not perfect, but that should be cleaned up before pushing upstream.

Messages

Follow Conventional Commitsarrow-up-right. If the repo uses Kathariarrow-up-right, you can just run yarn run cz and follow the prompts to craft a valid message.

circle-info

Note that all the words in a commit message are in present tense except for the first word in the footer, e.g. Closes, Fixes, etc.

Merging

triangle-exclamation

Before merging:

circle-info

Always alert other people who are working on a branch when you are about to rewrite its history.

Misc. Tips

triangle-exclamation
circle-info

Use lightweight tags to bookmark commits for future reference.

circle-check

Last updated

Was this helpful?