GitHub Actions などで、ファイルを定期的に自動生成して、 commit & push する場面がちらほらあると思います。
そのとき、適当な外部の Action を使っても良いですが、そこまででもないな......というときのためのメモ。
自動生成して commit & push する場合、こんな感じになる。
$ git add . $ git commit -m"commit message" $ git push origin main
ただ、自動生成ファイルに対して差分が無かった場合、コミットが失敗して GitHub Actions が失敗する。
個人的には差分が無い場合は許容したいので、次のようにすると差分がある場合だけ commit される。
$ git add . $ git diff-index --quiet HEAD || git commit -m"commit message" $ git push origin main
git diff
でもいいのでは?と思いつつ調べてみると、 Git にはコマンド体系が 2 種類あるらしく、スクリプトなどからリポジトリの状態などを調べたい場合には Plumbing コマンドと呼ばれるものを使うと良いようです
(ちなみに、普段使っている git diff
などのコマンドは Porcelain コマンドと呼ばれているようです)。
ということで、メモでした。
参考: