Joey Hess [off-list ref] writes:
... I know this
will be confusing, because with current git, users have to be instructed
to push these branches *once*, to get the tracking set up.
Well, a tool like git-annex is not the primary audience to choose the
default behaviour for "git push" without configuration. Instead of
instructing "to push *once*", you can easily instruct to install
remote.$name.push that covers the primary and subsidiary branches.
Alternatively "git annex push" could drive the underlying "git push" in
whatever way it wishes. Notice a branch is being pushed, and then add its
subsidiary branch to the set of refs to be pushed (because it, not Git, is
the one who knows the correspondence between the primary branch and the
subsidiary branch).