2026.09.26 ハマり 3分で読めます
Gitの警告を失敗扱いして、自動バックアップを飛ばしていました
毎朝のまとめを、GitHubにも自動で保存するようにしていました。一通り動かしてみると、朝の通知は届くのに、バックアップが保存されていませんでした。
調べると、変更を記録する道具「Git」が出した注意書きで、保存の手順が止まっていました。
注意書きを、失敗だと思っていた
きっかけになったのは、このメッセージです。
warning: LF will be replaced by CRLF
「改行の書き方を変換します」という注意書きです。このとき、Gitの操作自体は失敗していませんでした。でも、その操作を呼び出す側が「失敗した」と受け取ってしまいました。
使っていたのはWindows PowerShell 5.1です。決めた手順をまとめて実行する道具で、「エラーがあったら止める」という設定($ErrorActionPreference = 'Stop')にしていました。
この環境では、Gitの注意書きも止まるきっかけになっていました。しかも、失敗したときは「保存は飛ばして、まとめの通知は続ける」という手順にしていました。
改行の書き方を変換する、というお知らせだった。
保存をやめて、失敗したとき用の手順へ進む。
保存だけ飛ばされ、見える通知はいつもどおり届く。
出力を隠しても、直らなかった
最初は、注意書きを画面に出さないようにしました。それでも止まります。表示を消しても、「失敗した」と受け取るところは変わっていませんでした。
ただし、同じPowerShellでもバージョンによって違います。Microsoftによると、7.2以降は外部コマンドのエラー出力を別へ流した場合の扱いが変わっています。PowerShell公式の設定変数の説明
同じスクリプトを調べるときも、まず動いているバージョンを確認します。
注意書きの有無ではなく、結果を見る
修正したのは2点です。
- Gitを呼ぶ処理の中では、警告だけで止まらない設定にする。
- 操作が返す結果の番号(終了コード)を見て、成功したかを確かめる。PowerShellでは
$LASTEXITCODEで読めます。
番号の意味は、操作によって違います。「変更があるかを調べる」と「GitHubに送る」では、同じ番号でも同じ意味とは限りません。それぞれの結果を確かめるようにしました。
失敗したときも、「パソコンには記録できたが、GitHubには送れなかった」のように、どこまで終わったかを残します。
直ったことも、実際に送って確かめた
直したあと、もう一度動かしました。朝のまとめができ、パソコンにもGitHubにも同じ内容が残っている。そこまで見て、直ったと判断しました。コードを読むだけでは見つからなかった不具合です。
今なら同じ自動化を確認するとき、成功通知だけでなく、途中で飛ばされた工程がないかも見ます。最後まで走ったことを、全部成功したことの代わりにしないためです。