code: def push(self):
          
          expt_name = self.config.get('name', self.expt.name)
  
          default_ssh_key = 'id_rsa_payu_' + expt_name
          ssh_key = self.config.get('sshid', default_ssh_key)
          ssh_key_path = os.path.join(os.path.expanduser('~'), '.ssh', 'payu',
                                      ssh_key)
  
          if not os.path.isfile(ssh_key_path):
              print('payu: error: Github SSH key {key} not found.'
                    ''.format(key=ssh_key_path))
              print('payu: error: Run `payu ghsetup` to generate a new key.')
              sys.exit(-1)
  
          cmd = ('ssh-agent bash -c "ssh-add {key}; git push --all payu"'
                 ''.format(key=ssh_key_path))
          subprocess.check_call(shlex.split(cmd), cwd=self.expt.control_path)
docs: Push the changes to the remote repository.
  
          Usage: payu push
  
          This command pushes local runlog changes to the remote runlog
          repository, currently named `payu`, using the SSH key associated with
          this experiment.
  
          For an experiment `test`, it is equivalent to the following command::
  
              ssh-agent bash -c "
                  ssh-add $HOME/.ssh/payu/id_rsa_payu_test
                  git push --all payu
              "