def push_to_remote(self, base_branch, head_branch, commit_message=""):
        """ git push <origin> <branchname> """
        set_state(WORKFLOW_STATES.PUSHING_TO_REMOTE)

        cmd = ["git", "push", self.pr_remote, f"{head_branch}:{head_branch}"]
        try:
            self.run_cmd(cmd)
            set_state(WORKFLOW_STATES.PUSHED_TO_REMOTE)
        except subprocess.CalledProcessError:
            click.echo(f"Failed to push to {self.pr_remote} \u2639")
            set_state(WORKFLOW_STATES.PUSHING_TO_REMOTE_FAILED)
        else:
            gh_auth = os.getenv("GH_AUTH")
            if gh_auth:
                set_state(WORKFLOW_STATES.PR_CREATING)
                self.create_gh_pr(
                    base_branch,
                    head_branch,
                    commit_message=commit_message,
                    gh_auth=gh_auth,
                )
            else:
                set_state(WORKFLOW_STATES.PR_OPENING)
                self.open_pr(self.get_pr_url(base_branch, head_branch))
git push <origin> <branchname>