Charlie Smurthwaite [off-list ref] writes:
Yes, I would need to be able to do this on a bare repo for my use case.
And if it's on the server, you don't want this to be observable, so
you don't want HEAD to move around. I don't know a better way than:
$ git clone --shared -b upstream-branch bare-repo.git /tmp/merge-repo
$ cd /tmp/merge-repo
$ git pull URL incoming-branch
Cloning with --shared just writes a path into .git/objects/info/alternatives
and it doesn't need to be on the same file system (unlike --local).
Since 'git merge-tree' just works with trees, it has less information
than 'git merge'.