GIT supports a wide variety of workflows, which we typically use to create a master branch remotely, create a functional branch for each person, and work through the following routines:
Go to your own branch of work
$ git checkout work
Job
....
Commit changes to the work branch
$ git commit -a
Back to Main branch
$ git checkout master
Get the latest changes remotely, no conflicts at this time
$ git pull
Back to work Branch
$ git checkout work
Use rebase to merge trunk modifications If there is a conflict at this time to resolve
$ git rebase master
Back to Main branch
$ git checkout master
Merge the modifications of the work branch without creating a conflict at this time.
$ git merge work
Submit to remote Trunk
$ git push
The advantage of this is that the history on the remote trunk is always linear. Each person resolves the conflict on the local branch and does not conflict on the trunk.
Git branch merge to Master