GitHub Action で PR に何かして push する


      - uses: actions/checkout@v2
          ref: ${{ github.event.pull_request.head.ref }}


PR に対して特定の実行してそのPRにコミットしたい。 例えば code format とか

まぁ、最初 main とかでやるように雑にやってみた

      - name: Commit updated files
        run: |
          if ! git diff --exit-code --quiet
            git add .
            git config --local ""
            git config --local "File Update GitHub Workflow"
            git commit -m "Update Files"
            git push


fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use

    git push origin HEAD:<name-of-remote-branch>

はいはい detached ね。みたいな気分で提案通り git push origin HEAD:<name-of-remote-branch> してみる

 git push origin HEAD:${GITHUB_REF#refs/heads/}


 ! [rejected]        HEAD -> xxxxxx (fetch first)
error: failed to push some refs to ''
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.


Release v2.0.0 · actions/checkout · GitHub

  • Creates a local branch
    • No longer detached HEAD when checking out a branch
    • A local branch is created with the corresponding upstream branch set

checkout の action は detached しなくなってる。けど、まぁこれは main とかの話かなぁ

じゃぁなんで動かないんだと思ってさらに調べたら checkout 時に ref 指定できることを発見した。 ということで最初に書いた with ref 使えば動きました。

なんかネット調べてたら別途 checkout しろとかいろいろ情報錯綜してたのでちょっとハマった。