スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

git rm を一括処理する。

Gitで新しく追加されたファイルは

$ git add .

で簡単にステージに追加できます。

しかし、削除したファイルをステージから削除するのは1個ずつやらないといけない。
しかも、ファイルが削除されてしまっているので、ターミナルのファイル名補完が働かないという罠。

というわけで、仕方なく一部手打ちで

$ git rm app/controller/user*

とかしてたんですが、めんどくさくなったので、git statusの結果から一括削除することに。

$ git status | grep -e deleted: | sed -e "s/#\t*deleted: *//g" | xargs git rm


これでステージからの一括削除ができます。
ただし、Gitのバージョンが違ったりすると、正規表現が一致しなくなるかも知れないので、そのあたりは自己責任で。


【補足:簡単な説明】
git status で変更があったファイル一覧を出力し、パイプでgrepに投げます。

grep は受け取った文字列から、ステージから削除したいファイル名が含まれる行、すなわち、「deleted:」が含まれる行を抽出し、sedに投げます。

sed はファイル名以外の部分を削除します(Gitのバージョンが変わると、ここが一番弱い)。

最後に、xargsでsedの出力を受け取って、それぞれに対して git rm します。


上にも書きましたが、sedの正規表現の部分が一番弱いので、変更に対して強い正規表現に書き換える必要がありますが、面倒なので困ってから書きk(ry

コメントの投稿

非公開コメント

カレンダー
05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
検索フォーム
カテゴリ
月別アーカイブ
最新記事
最新コメント
最新トラックバック
RSSリンクの表示
QRコード
QR
リンク
アクセス解析
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。