Git: detached head vermeiden in pr-commit



  • Hi, ich möchte in einem pull request ein Verzeichnis hinzufügen, das eigentlich in der .gitignore steht.

                -   name: Check out repository code
                    uses: actions/checkout@v3
                -   run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
                -   run: echo "🖥️ The workflow is now ready to test your code on the runner."
                -   name: Build files in the repository
                    run: |
                        apt update
                        apt install openjdk-17-jdk-headless -y
                        ./gradlew clean build
                        ls -laR build/reports/
                        git config user.email "bot@localhost"
                        git config user.name "localhost bot"
                        git add build/reports/ -f
                        git commit -m "Reports added"
                        git push
    

    Das führt zu einem detached head und der push schlägt anschließend fehl.

                -   name: Check out repository code
                    uses: actions/checkout@v3
                -   run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
                -   run: echo "🖥️ The workflow is now ready to test your code on the runner."
                -   name: Build files in the repository
                    run: |
                        apt update
                        apt install openjdk-17-jdk-headless -y
                        ./gradlew clean build
                        ls -laR build/reports/
                        git config user.email "bot@localhost"
                        git config user.name "localhost bot"
                        git add build/reports/ -f
                        git commit -m "Reports added"
                        git push origin HEAD:${{ github.ref }}
    

    Und das führt zu einem kaputten pull request, "da Fork-Informationen gelöscht wurden"...

    Habt ihr vielleicht eine Idee? Ein vorheriges fetch, pull oder checkout hatte ebenfalls nicht geklappt.

    Das git add ... -f und git commit ... führt einfach (immer) zum detached head.



  • Der Trick war, einfach vorher den PR Branch Namen auszuchecken:

        run: |
            echo ${{ github.event.pull_request.head.ref }}
            git fetch --prune
            git checkout ${{ github.event.pull_request.head.ref }}
            git pull --rebase
            apt update
            apt install openjdk-17-jdk-headless -y
            chmod +x ./gradlew
            ./gradlew clean build
            git config user.email "bot@localhost"
            git config user.name "localhost bot"
            git add build/reports/ -f
            git commit -m "Reports added"
            git push
    

    Dann hängt der Commit auch nicht im luftleeren Raum.


Anmelden zum Antworten