Branch Workflow#
In order for of our builds to run and packages to be published automatically, we follow a custom workflow when it comes to feature branch management. To better understand that workflow, let's run through an example.
Create a Pull Request of master
#
All feature branches are based of master
as it is the "base" branch for all repositories against which pull requests are made.
Start with master
#
First and foremost, make sure your current branch is master
and it is up-to-date.
~/monster-ui (master)$ git checkout master
~/monster-ui (master)$ git fetch origin
Create your feature branch#
You can then create your feature branch named after the issue ticket you are working on and checkout to it.
~/monster-ui (master)$ git checkout -b <TICKET-#>
Commit your changes#
Apply changes related to the feature you are working on.
~/monster-ui (<TICKET-#>)$ git add -p
~/monster-ui (<TICKET-#>)$ git status
~/monster-ui (<TICKET-#>)$ git commit
Push your feature branch#
Pushing your branch to the remote server serves as a backup and it can be pulled down by teammates in order to test the changes if needed:
~/monster-ui (<TICKET-#>)$ git push origin <TICKET-#>
Create a pull request#
Once your branch is on the remote server, you can create a pull request with <TICKET-#>
as the head branch and master
as the base branch.
The naming convention regarding pull request out of master
is as follows:
<TICKET-#>: <Pull request title>
Don't forget to add reviewers to your pull request as at least one review is required before you can merge it.
Create a Pull Request of <latest>
#
Now you need to create a branch based out of <latest>
and cherry-pick the changes contained in <TICKET-#>
into it.
At the time of writing, the <latest>
branch is 5.0
.
Start with <latest>
#
~/monster-ui (<TICKET-#>)$ git checkout -b <latest> origin/<latest>
~/monster-ui (<latest>)$ git pull
Create your feature branch#
~/monster-ui (<latest>)$ git checkout -b <TICKET-#>-<latest> <latest>
Notice how <latest>
is appended to the branch name.
Cherry-pick your changes#
Log the commits in the <TICKET-#>
branch and take note of the first and last SHA-1 hashes for the commits related to the work on that branch. Those references will be used to cherry-pick your changes into the <TICKET-#>-<latest>
branch.
~/monster-ui (<TICKET-#>-<latest>)$ git cherry-pick <first-sha-1>^..<last-sha-1>
Push your mirror feature branch#
~/monster-ui (<TICKET-#>-<latest>)$ git push origin HEAD
Create a pull request#
Once your branch is on the remote server, you can create a pull request with <TICKET-#>-<latest>
as the head branch and <latest>
as the base branch.
The naming convention regarding pull request out of <latest>
is as follows:
[<latest>] <TICKET-#>: <Pull request title>
You should add the same reviewers you added to this pull request than for the <TICKET-#>
one.