        If `-a` or `--all` was specified, pushes all non-annihilated
        TopGit-controlled topic branches, to a remote repository.
        Otherwise, pushes the specified topic branches -- or the
        current branch, if you don't specify which.  By default, the
        remote gets all the dependencies (both TopGit-controlled and
        non-TopGit-controlled) and bases pushed to it too.  If
        `--tgish-only` was specified, only TopGit-controlled
        dependencies will be pushed, and if `--no-deps` was specified,
        no dependencies at all will be pushed.

        All TopGit branches to be pushed must be up-to-date unless the
        `--allow-outdated` option is given.  Branches *are* checked against
        the configured TopGit remote (`topgit.remote`) if it's set (as
        modified by the global `-u` and `-r <remote>` options).

        The `--dry-run`, `--force`, `--atomic`, `--follow-tags`,
        `--no-follow-tags`, `--signed[=...]`, `-4` and `-6` options
        are passed through directly to `git push` if given.

        The push remote may be specified with the `-r` option. If no remote
        was specified, the configured default TopGit push remote will be
        used (`topgit.pushRemote`) or if that's unset the regular remote
        (`topgit.remote`).

        Note that when pushing to a configured Git remote (i.e. it appears in
        the `git remote` output) that appears to have local tracking branches
        set up for the remote TopGit branches and/or TopGit bases, `tg push`
        will attempt to make sure the local tracking branches are updated to
        reflect the result of a successful `tg push`.  This is the same as
        the normal Git behavior except that `tg push` will always attempt to
        make sure that *both* the local tracking branches for the remote TopGit
        branches *and* their bases are always updated together even if the
        configured Git remote only has a `fetch` refspec for one of them.  If
        the remote branches are being tracked by the configured Git remote in a
        non-standard local tracking branch location, it may be necessary to
        issue a subsequent `git fetch` on that remote after a successful
        `tg push` in order for them to be updated to reflect the `tg push`.

        Use something like this to push to an `origin` remote when it's set
        as `topgit.remote` while only checking for local out-of-dateness:

            `tg -u push -r origin <optional-branch-names-here>`

