git checkout develop git cherry-pick production..feature does exactly what you want for your first question, it cherry-picks every commit in feature that isn't also in production's history. For the rest of your questions, various other ways of specifying commit ranges as found in the gitrevisions manpage will work, and after...
git-flow,git-workflow,branching-strategy
Great questions and the answer really depends on how you sort your git. The branching model and gitflow in general is trying to give us some order in the chaos that commits are just after a couple of days. The image below shows you what they though makes most sense....
git-flow has the concept of release branches that you can use for that purpose. The fact is that in git-flow, develop isn’t simply merged into master. You create first a release branch where you prepare for the live version, test it, and make last minute bug fixes before merging it...
The following will squash all commits in a branch to a single commit and merge it to current branch. git merge --squash qa_branch1 See this question for a graph...
git,branching-and-merging,git-workflow
The mentioned work flow does not include the case you mentioned. If the old class does not exist in newer releases, this means that the bug might not even exist as well, so the bugfix should not be propagated to that new releases. Also you don't need to merge it...
I'm not sure what's really the hard part for you as you seem to have all the needed bits ready… You already have the toughest bit working: auto-deployment from your online repo. So, just make the same setup for your demo repo as you have in your online repo, and...