とあるファイルの内容を別のブランチから現在のブランチにもってくる方法

やりたくなった理由

マークアップ系がコンフリクトを起こしてるけど、編集したのは自分じゃないし解決する自信あまりない。でもマージもできないのでCSSファイルなどを持ってきてUIを見ながら修正することもできない。
調べるとCSS関連のファイルではコンフリクトは起きてないので、これだけ持ってきちゃいたい。

それワンライナーでできます

for file in `git diff <比較ブランチ> --name-only | grep .css`; do git checkout develop $file; done

少し解説

  1. git diff --name-onlyはファイル名だけを羅列するのでそれをgrepでほしいファイルだけに絞り込み
  2. git checkout <とあるブランチ> <filename>でとあるブランチ状態のそのファイルの状態にチェックアウト
  3. for...inで上2つを繰り返し実行