We use a form of Git flow to maintain a stable master
branch, and work off feature branches to introduce new features and other code updates. The feature branches are tied to JIRA tickets.
To keep our git log clean and tidy we use git's rebase strategy. That means that instead of merging commits in and out of the master branch (resulting in many ugly merge commits) we always keep our own feature branch's commits on top of the existing master branch commits.
You can read more about the rebase strategy here: https://www.atlassian.com/git/tutorials/merging-vs-rebasing.