I'm trying to come up with a personal workflow. I've put together a flowchart of the hypothetical lifespan of a release: one developer pushing to a public github repo + a friend helping with some feature and fixing a bug. Is this a reasonable approach to version control? The main idea is to keep the public repo tidy: * Each new release gets on its own branch until it's finally tagged in the master branch when it's finished. * All work is done on "feature" or "hotfix" branches, never on an actual release branch, to prevent anomalies. * Merges to higher-level branches are always rebased or squashed (to avoid clutter). If it's overkill I don't mind because the whole point is for me is to learn skills I might need for a larger project. The only problem would be if I'm doing something flat out wrong or unnecessary. **edit 2:** fixed bad idea in the original flowchart and made it a bit easier to navigate. ![v1.1][1] [1]: https://i.sstatic.net/kxOIy.jpg