I've read about @nvie's Git branching model and gitflow and I think this is a good model to use for a project (web application) I'm currently working on.
I'm the lead developer of the project and I develop on a local environment (MAMP-like). Whenever I've made something to show the client, I commit my work and push it to a central Git host. From there I deploy it to a server connected to the internet. Then my client can see the changes.
A second developer just started working on the project. He develops single features at a time and pushes them to the central Git host when they're ready. I review his work before deploying it.
Currently all commits are done in the master branch and are deployed to the single hosted environment. In the future I'd like to have a production environment (for real usage), testing environment (to test new versions of the app just before they're released), and a development environment (where I can show features that are finished or still in progress to the client). I think the production environment would get deploys from master, while the development environment would get deploys from develop.
The questions I have are the following:
I'm often working on several tasks at the same time. When a part of a feature is ready, I sometimes want to show it to my client before I continue to work on that feature. However, to my understanding, a feature (branch) would only be merged to
developwhen it's finished and scheduled for release. How can I show features that are in progress (or not yet scheduled for release) to my client (in the development environment)?From which branch should I deploy to the testing environment? Should I manually pick the release branch of that moment, or could there be a dedicated testing branch?