I'm looking to progress a move from SVN to Git at the company I work for. The issue I'm having is getting my head around a decent workflow.
Typically for a PHP project in a post-launch state, the client would create a ticket for some work with an ID (smeg23452). In SVN, we would typically put the ticket ID in each commit on the develop branch and then cherry pick those changes and put them into the trunk. It's okay, but there have been times where merges have failed or developers have failed to put ticket numbers against work.
In an ideal world, I would like to be able to have a branch in Git for the ticket (e.g. smeg23452), merge smeg23452 into develop when changes have been completed and then merge smeg23452 into staging which will be tested, staging will be merged to master ready for deployment live (not merge develop to master, which seems to be common practice). A client may typically create 5 tickets, want to see them in the develop environment online and then pick only 3 of those tickets to go live which is why I need to be able to keep them far away from other environments.
Have I got it all wrong?