Git Operations in GitHub actions
Git commands, such as checkout, add, create a branch, make a pull request in Github actions.
Checkout (Clone a repository)¶
The official actions/checkout action clones the repository to $GITHUB_WORKSPACE. By default it uses built-in GITHUB_TOKEN for authentication.
In most cases, this is what you need:
The checkout action also supports pushing a commit to the same repo.
Warning
This may not work on protected branches that need status checks.
on: push
jobs:
  git-push:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: |
          date > generated.txt
          git config user.name github-actions
          git config user.email github-actions@github.com
          git add .
          git commit -m "generated"
          git push
However, no further workflows will be triggered with the GITHUB_TOKEN. You will need the following steps to trigger workflows.
How to trigger further CI runs¶
You will need either a Personal access token (PAT) with repo scope access as an action secret.
Or a pair of SSH keys; the public key is the deploy key with write access, while the private key is an action secret variable SSH_PRIVATE_KEY.
Push changes back to GitHub¶
The following actions are more convenient for commit and push than the official checkout action.
Create a pull request¶
The peter-evans/create-pull-request action will commit all files into a new branch and make a pull request to the target (default main) branch.
- name: Create Pull Request
  uses: peter-evans/create-pull-request@v6
  with:
  # token: ${{ secrets.PAT }} # A PAT is required for triggering pull request workflows
    token: ${{ secrets.GITHUB_TOKEN }}  # This will not trigger further workflows
Merge pull requests¶
- Kodiak Bot : automatic merge PRs based on the issue label. (by default automerge). See also auto-deps-update.
- Run gh pr merge --merge --auto $PR_NUMBERin the workflow.
- peter-evans/enable-pull-request-automerge : A GitHub action to enable auto-merge on a pull request.