# 🛶 Git Workflow
Teams at Launch Pad will use the git version control system and GitHub website to build software collaboratively. This document describes a recommended GitHub workflow for Launch Pad teams, as well as a basic intro on how to execute that workflow yourself.
# Updating Your Copy of the Codebase
Most projects will have a primary branch, which will usually be called master
.
Before beginning new development, make sure you have checked out your project's
master
branch and have the most recent commits from your GitHub repo on your
local master
branch by:
git checkout master
git pull
# Branches
When you begin working on a feature or bug fix associated with a GitHub issue,
create a new branch from master
; the most convenient way to do this is:
git checkout -b <my-new-branch>
Branch naming varies from team to team - one format is to name it with the following template:
<name>/#<issue-number>-<issue-description>
For instance, if Eric is working on issue #23, which is for adding a like
button, he would name his branch eric/#23-like-button
.
Alternatively, a larger project can name branches based on the component being affected, like so:
<component>/#<issue-number>-<issue-description>
For example, if you're adding a like button to the user profile page, you would
name your branch profile/#23-like-button
.
If you have been working on your branch for a while, there may have been updates
to your project's master
branch that you want to include in your branch. To
update your branch, run the following command:
git pull origin master
Alternatively, you can rebase ("replay" your commits on top of the latest
master
commit) instead by running git pull --rebase origin master
instead.
# Developing and Committing Code
All new code should be committed to the new issue branch. To make commits, first you must "stage" your new code:
git add .
This will add all edited files in your project to "staging", which means it will
be part of your next commit. You can add individual files as well using
git add <my-file-name>
. When you have finalized your change, you should commit
it using the following command:
git commit -m "<my-description>"
Commits on the remote issue branch should contain logical chunks of functionality and be accompanied by descriptive commit messages. A commit description should be a brief, succinct, and accurate overview of your changes - messages like "fix" or "attempt 12" are uninformative and unhelpful, while "Added check to account for edge case in AddUser()" is a good message. You can refer to this guide for an overview of how to write good commit messages.
When you're happy with a chunk of functionality, which is usually be built over several commits, you should push it to a remote (i.e. GitHub) branch. The easiest way to do this is to run the following command:
git push origin HEAD
Commits can be edited if you feel your commits are not descriptive enough - if you would like some help doing so, ask your Tech Lead.
# Pull Request
When the issue being worked on is ready to be merged into master
and all
relevant commits on that branch have been pushed to GitHub, OR when you feel
like you are stuck and need help, create a pull request on GitHub. Opening
work-in-progress pull requests for your banch is a good way to get feedback on
your direction and get pointers on how to best complete your task.
- Request a review from anyone who is familiar with the section of the codebase being worked on; it is often a good idea to request a review from your Tech Lead as well.
- At least one other team member must review every pull request before it is merged (your team should be enforcing this with GitHub's repository controls).
- If a reviewer requests changes, update the PR accordingly and request another review.
- Once the reviewer accepts the changes, merge the PR.
- Once it is merged, delete the branch.
Learn more about pull requests in our handbook's GitHub guide.