LoginSignup
25
26

More than 5 years have passed since last update.

変更があったファイルだけエクスポートする

Posted at

以下のコマンドで、OLD_COMMIT と NEW_COMMIT の間に変更があったファイルだけ取り出せる。
OLD_COMMIT バージョンが old ディレクトリに、NEW_COMMIT バージョンが new ディレクトリに出力される。

OLD_COMMIT=$1
NEW_COMMIT=$2
for file in `git diff --name-only $OLD_COMMIT $NEW_COMMIT` ; do
    git archive --prefix=old/ $OLD_COMMIT $file | tar -xf - ;
    git archive --prefix=new/ $NEW_COMMIT $file | tar -xf - ;
done
  • git diff --name-only で違いがあるファイルの名前だけを取得する
  • git archive でそのファイルを取り出す

補足:git archive コマンド

git archive コマンドはちょっと癖があるけど、うまく使うと便利。

  • 標準出力に tar 形式で出力されるので、個々のファイルとして取り出すには tar コマンドにパイプする必要がある
  • ファイル名を指定すると、特定のファイルだけを取り出せる(tar 展開なのでいちいち mkdir しなくてもディレクトリが生成されるのが嬉しい)
  • prefix オプションで出力先ディレクトリを指定できる(このとき、最後にスラッシュを付ける必要がある)
25
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
26