This is one possible approach.
For commits in the office branches you want to apply to master, just cherry-pick them on top of master. If you know what you're doing, you could also rebase a series of commits on top of master.
To go the other way, a merge is indeed appropriate; you will want to merge master into office branches, but not the other way around. You would check out the office branch you want to apply the core changes to, and git merge master
. This will attempt a merge, but it will only touch the office branch; the master branch will not be moved.
You may also want to consider providing a default list of colors, and allow a new file to be created to override those. You would list the override file name in .gitignore
so that those changes are never committed to the Git repository. You would be able to update the default in master and merge that into the office branch, but you'd never see the office color overrides except on the deployed copy.