🐱

GitHub Actions で Git の操作 (前のコミット ID 取得など) がうまくいかないときの対処法

2022/03/12に公開

GitHub Actions で Git の操作をする方法

GitHub Actions で YAML 内に以下を追加すると Git の操作ができるようになる。

- uses: actions/checkout@v2

たとえば、push 時に発火して、push 直前のコミットと最新のコミットの間で変更されたファイル一覧を取得したかったとする。

run: git diff --name-only ${{ github.event.before }} ${{ github.sha }} | xargs

エラー

しかし、これを GitHub Actions 上で実行すると以下のようなエラーが出る。

fatal: bad object 1486f018f2a4958801fef8059f264d8101203404

ローカルに clone してきて同じコマンドを実行するとうまくいく。

解決策

fetch-depth を追加する。

- uses: actions/checkout@v2
  with:
    fetch-depth: 0

この記事 に以下のように書かれている。

actions/checkout@v2ではチェックアウト時の時間短縮のために指定されたブランチの先頭コミットしか取得(fetch)してきません。

引用元: https://zenn.dev/satococoa/articles/e026c0689e5678

先の例では、fetch-depth を指定しないと、push 直前のコミットが取得できないのでエラーになってしまっていた、ということ。

参考

GitHubで編集を提案

Discussion