I finally found the problem and will try to answer my own question here:
In my global .gitconfig I disabled automatic merging with
mergeoptions = --no-commit
But after each "git pull", I didn't actually commit the merge on my Windows slave and later pushed things upstream to my Mac master. That was where all the conflicts came from.
I think the general suggestions I got from Web regarding rebase/merge workflows are:
- Use "git fetch" instead of "git pull" as much as possible, so that further decisions can be made.
- Use "rerere" to automatically resolve repeated known conflicts.
- Prefer squashing small commits into a fat one before "git svn dcommit" or branch merging, using either "git rebase -i" or "git merge --squash". This will to some extent reduce the number of repeated conflicts.
- Create duplicate branch or tracking branch before merging or rebasing to preserve unsquashed branch history.
- Use "git list-files -u" to show conflicted files before merging.
- Before every merging operation, use "git diff branch1 branch2" before merging to avoid merging blindly.
- Use "git show branch..file" to view a particular file under a branch to verify against.