You may want to use a .gitattributes file to use a slightly different merge driver. I have found that this has helped with mine:
*.csproj -text merge=union
*.sln -text merge=union
You can read more about it here to see if there are options you like better.
You can also tell git to take a little longer thinking about its merges with the patience
option like this: (read more here)
git rebase -s recursive -X patience
The only other thing that I can think of is to make sure that you pull code often so that the merges git has to do are smaller.
FYI, if you want you can do a rebase
on the same line at the same time that you do a pull like this: (and you can still pass in the recursive
and patience
options the same)
git pull --rebase origin master