Here is some information on Branching
By Vincent Driessen https://nvie.com/posts/a-successful-git-branching-model/
NOP commerce Instructions:
Production branch: master
Development branch: develop
Feature and issue branches: Should start with "feature" or "issue". It should be followed by issue ID (according to our Github issue list) and some friendly name (example, "multistore"). Finally, it should look like "feature-34-multistore" or "issue-35-paypal-redirection-bug"
Release branches: Should start with "release". It should be followed by version number (example, "3.00"). Finally, it should look like "release-3.00"
NOP 3.9 since Base release.
Move your customizations to plugins so that way you can easily upgrade the nopCommerce Project while still preserving your changes as plugin projects.
Hope this advice helps,
create a custom folder in each of the projects name it starting with a z so it will appear last "zCustom"
write all your code in these folders
u can also add your own dependency register file for your services and and data
since most of the classes are partial u can use any class with in the project
part for the views u can place all files in the custom folders
name your controllers starting with a z as well "zCustomer" so the view will be placed last on the list
when upgrading clone the new project and drag and drop your custom folders and views (5 minutes)