私はこの単純なgitエイリアスを使用しています。
rmdel = "!git rm $(git ls-files -d)"
これは「削除されたアイテムの削除」を意味します。つまり、ファイルシステムから削除されたすべてのファイルを準備領域から削除します。ファイルにスペースが含まれていない場合は正常に動作します。これにより、明らかにリストも分割され、ファイル名が存在しなくなります。
IFSを使って解決することは可能だと思いましたが、IFSはcygwinで動作しないようです。次のような疑いがあります。
rmdel = "!IFS=' ' git rm $(git ls-files -d)"`
完全に動作します。より良いアイデアがありますか?
答え1
ls-files
この目的のために設計されたスイッチがあります-z
。
-z \0 line termination on output.
xargs
スペースの代わりにヌル文字で項目を区切ることができるスイッチがあります-0
。これを組み合わせると、次のような結果が得られます。
$ git ls-files -dz | xargs -0 git rm