code: def _push(
      repo: "Repo",
      git_remote: str,
      refs: Iterable["ExpRefInfo"],
      force: bool,
  ) -> Mapping[SyncStatus, List["ExpRefInfo"]]:
      from scmrepo.exceptions import AuthError
  
      from dvc.scm import GitAuthError
  
      refspec_list = [f"{exp_ref}:{exp_ref}" for exp_ref in refs]
      logger.debug(
          "git push experiment %s -> '%s'", refspec_list, git_remote
      )
  
      with TqdmGit(desc="Pushing git refs") as pbar:
          try:
              results: Mapping[
                  str, SyncStatus
              ] = repo.scm.push_refspecs(
                  git_remote,
                  refspec_list,
                  force=force,
                  progress=pbar.update_git,
              )
          except AuthError as exc:
              raise GitAuthError(str(exc))  # noqa: B904
  
      def group_result(refspec):
          return results[str(refspec)]
  
      pull_result: Mapping[SyncStatus, List["ExpRefInfo"]] = group_by(
          group_result, refs
      )
  
      return pull_result
  
imports: from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Mapping, Optional, Set, Union
  from funcy import compact, group_by
  from scmrepo.git.backend.base import SyncStatus
  from dvc.env import DVC_STUDIO_TOKEN, DVC_STUDIO_URL
  from dvc.exceptions import DvcException
  from dvc.log import logger
  from dvc.repo import locked
  from dvc.repo.scm_context import scm_context
  from dvc.scm import Git, TqdmGit, iter_revs
  from dvc.utils import env2bool
  from dvc.utils.collections import ensure_list
  from .exceptions import UnresolvedExpNamesError
  from .refs import ExpRefInfo
  from .utils import exp_commits, exp_refs, exp_refs_by_baseline, resolve_name
label_desc: Use image node_id 5 for calling a global function with example usage: _push(repo, git_remote, refs, force) and returns: pull_result, results