code: def test_push_diverged(tmp_dir, scm, dvc, git_upstream, exp_stage):
      git_upstream.tmp_dir.scm_gen("foo", "foo", commit="init")
      remote_rev = git_upstream.tmp_dir.scm.get_rev()
  
      results = dvc.experiments.run(
          exp_stage.addressing, params=["foo=2"]
      )
      exp = first(results)
      ref_info = first(exp_refs_by_rev(scm, exp))
  
      git_upstream.tmp_dir.scm.set_ref(str(ref_info), remote_rev)
  
      assert dvc.experiments.push(
          git_upstream.remote, [ref_info.name]
      ) == {
          "diverged": [ref_info.name],
          "url": None,
          "uploaded": 0,
      }
      assert (
          git_upstream.tmp_dir.scm.get_ref(str(ref_info)) == remote_rev
      )
  
      dvc.experiments.push(
          git_upstream.remote, [ref_info.name], force=True
      )
      assert git_upstream.tmp_dir.scm.get_ref(str(ref_info)) == exp
  
file_path: dvc/tests/func/experiments/test_remote.py
imports: import logging
  import pytest
  from funcy import first
  from dvc.repo.experiments.utils import exp_refs_by_rev
label_desc: Use image node_id 4 for calling a global function with example usage: test_push_diverged(tmp_dir, scm, dvc, git_upstream, exp_stage) without return types