        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``, ``--signed[=...]``,
        ``-4`` and ``-6`` options are passed through directly to ``git push``
        if given.  Note that in the highly unlikely event that the branch names
        of all the branches being pushed do not fit on a single command line,
        multiple ``git push`` commands will be issued which would have the side
        effect of rendering ``--atomic`` not so atomic and cause more than
        one signature to be needed if ``--signed[=...]`` is used.

        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``).

        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>``

