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
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
# Make some changes on master
git checkout master
# 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.