Ответ 1
Вы можете получить все три, переименовав файл по-разному в каждой ветке.
git init
touch foo
git add foo
git commit -m 'initial commit'
git checkout -b tmp
git mv foo X
git commit -m 'rename to X'
git checkout -
git mv foo Y
git commit -m 'rename to Y'
git merge tmp
Теперь у вас есть все три состояния.
$ git status # On branch master # Unmerged paths: # (use "git add/rm ..." as appropriate to mark resolution) # # added by them: X # added by us: Y # both deleted: foo # no changes added to commit (use "git add" and/or "git commit -a")