git rm -r
をスクリプトに組み込む中で、「このディレクトリが存在するかはスクリプト実行時にしかわからない」というケースがありました。
git rm
は対象のファイルやディレクトリがない場合、エラーを返却します。これは-f
を付与した時も変わりません。
$ git rm hoge fatal: pathspec 'hoge' did not match any files $ git rm -rf hoge fatal: pathspec 'hoge' did not match any files
どうしたものかと思いましたが、こういったケースでは--ignore-unmatch
を使います。
このオプションを使うと、対象ファイルやディレクトリがあろうとなかろうとgit
は正常終了します。
$ git help rm | grep -A1 'ignore-unmatch$' --ignore-unmatch Exit with a zero status even if no files matched.
実際に実行してみると、正常終了することがわかります。
$ git rm --ignore-unmatch hoge $ echo $? 0