Each distribution branch should be originally branched off of the master
branch, then add commits directly to the distribution branches to make them unique. To keep them up to date, occasionally merge changes from master
into the distribution branches.
For example, if your distribution branches are one
and two
, then the following commit graph shows that commits are made against the master branch, then the changes are merged into each branch.

# Create distribution branch and make it unique
git checkout -b one master
work... work...
git commit
# Make some changes on master
git checkout master
work... work...
git commit
# Merge the changes into the distribution branch
git checkout one
git merge master
I have used this strategy when a master branch contained generic application settings, but I wanted to keep production environment settings in source as well. Each production environment had the specific settings committed, and when I wanted to update a production environment I would first merge master into the production branch.