We (Coherent Labs) are using git flow with some small modifications:
develop and master are locked. Only accepted (reviewed by two developers) PRs can be merged.
feature/<feature-name> - every new feature will have a prefix feature
fix/<bug-name> - fixes, regressions and quickfixes.
release/<release-version> - the release branches are ready for deployment, production tested code. All tests must be passing on the latest release branch.
tests/<test-related-code> - everything test related to our test automation infrastructure - our Selenium framework, test dependencies, unit, integration and GUI tests.
experimental/<experiment-name> - every reseach, POC (Point of Concept) and other related code are done in the experimental branches. These branches are never merged in develop or master and are removed once the "experiment" is over.
As for commit messages we are using the following model:
<Jira-issue-ID> <action-verb> <explanation>
<description (optional)>
For example:
[ED-666] fix exported JS code from the data-click attribute
On scene reopening, path strings were manipulated by the pathHandler method. We had to ignore paths coming from JS code in data-click. A RegExp check now filters which paths should be manipulated.
We have a Jira hook, which looks for the issue IDs in the commit messages, fetch all commits, PRs and branches and display them in the board. That way every developer and Project Manager can easily find and track the progress of the task.