Git で管理下にあるファイルのみをステージングする方法
Git リポジトリで、新しいファイルは追加せずに、すでに Git で管理されているファイルの変更及び削除のみをステージングする方法です。
ファイルを選り分けてひとつずつ add するのが億劫なときに便利です。
確認時の Git のバージョンは 2.18.0 です。
新しいファイルは除外して、 Git 管理下のファイルの変更のみを追加する:
$ # 次の 2 つは同じ意味です
$ git add -u .
$ git add --update .ちなみに、「変更」と「削除」のどちらかだけをまとめてステージングする方法は見つかりませんでした。
どうしてもやりたい場合は git status で一覧を出力して、そのうち対象のものだけを抽出し xargs で追加する形になるものと思います。
$ # 「変更」のみを抽出する(変更を表すフラグは `M` )
$ git status --short | ag -o '(?<=^ M ).+$' | xargs git add$ # 「削除」のみを抽出する(変更を表すフラグは `D` )
$ git status --short | ag -o '(?<=^ D ).+$' | xargs git addag は grep の代わりの The Silver Searcher コマンド です。
私の Mac に備え付けの grep では Perl の正規表現パターン(先読み・後読み)が使えないので、 grep の代わりに ag を使っています。
ag は grep と同じ -o ( --only-matching )オプションを認識できて、これを使うと正規表現にマッチした部分だけが返されます。
grep で Perl の正規表現パターン(= -P オプション)が使える場合はそのまま grep を使うとよいかと思います。
$ # 「変更」のみを抽出する(変更を表すフラグは `M` )
$ git status --short | egrep -oP '(?<=^ M ).+$' | xargs git add