Git workflow for maintaining a derivative fork
Option 3 seems to represent to clearest separation of workflow between the two projects:
- one with occasional contribution back to the original project, with pull requests
- one with entirely new branches and code for the new application
To facilitate the merges, I would recommend using hierarchical branch names in your repo, in order to clearly separate:
- branches for your project development (classic names, no need for a '
/
' in them) - branches from the upstream/original repo (all prefixed with a name representing a branch from the original repo, like '
original/dev
', for you to cherry-pick from or to)
Those branches are already in their remotes/upstream namespace, but if you want to push back new commits, you need to create a local branch, and my point is: the name of that local branch should have a '/
' in it, in order to clearly differentiate it with other regular branches for your project.