I work with a small team that uses git for source code management. Recently, we have been doing topic branches to keep track of features then merging them into master local
Do you know about git pull --rebase? It rebases rather than merging when you pull, and prevents merge commits from polluting your history.
git pull --rebase
You can also set it up as the default behaviour for a branch with the branch..rebase and branch.autosetuprebase config options.
branch..rebase
branch.autosetuprebase