コンテンツにスキップ

【GitHub Actions】git diff の差分を高速に取得する方法

概要

GitHub Actions の CI/CD で git diff の差分を取得したいことがある。差分を取得するためにactions/checkoutfetch-depthを 0 に設定する方法が広く知られているが、これは全履歴を取得するため、リポジトリが大きい場合は時間がかかる。そこで、高速に差分を取得する方法を紹介する。

方法

結論としてactions/checkoutを 2 回実行する。diff を取りたい branch もしくは commit sha を指定してactions/checkoutを実行する。

on:
  pull_request:

jobs:
  spell-check:
    name: Faster git diff
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.base.sha }}
      # diffをとるために2回repoをチェックアウトする
      - uses: actions/checkout@v4

      - name: Get diff
        run: git diff --name-only --diff-filter=AM ${{ github.event.pull_request.base.sha }} HEAD

参考