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
odercheckout
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.