よく忘れるのでメモ
忙しい人のまとめ
git diff --name-only --diff-filter=ACMR origin/master...HEAD | xargs <なんかコマンド>
例)自分が修正したファイルだけをrubocopで静的解析チェックするワンライナー
git diff --name-only --diff-filter=ACMR origin/master...HEAD | grep ".rb" | xargs bundle exec rubocop
コマンド解説
git diff
動作確認したgitのバージョンは 2.5.0
--name-only
: ファイルパスだけを出力xargs
で渡す場合にはファイルパスだけの方が都合がいい
--diff-filter
: Add(追加), Copied(コピー), Modified(修正), Renamed(リネーム)されたファイルだけを抽出- これをつけると削除されたファイルやリネーム前のファイルも出てくるため (存在しないファイルを後続のコマンドに渡してもエラーになる)
origin/master...HEAD
: 比較したいbranchをそれぞれ指定。HEADはなくてもok *1
詳細は git diff --help
参照
grep
rubocopにrubyのファイルだけ渡すため(viewやymlとかにrubyのコードが含まれていた場合にそれもチェックするので意図しないoffenseを出すので回避したい)
*1:省略時はHEADなので