以前、Gitでコミット間の差分ファイルをまとめて出力する方法を以下の記事で紹介した。

しかし、記事内で紹介したコマンドでは、コミット間に削除ファイルが含まれる場合、下記のエラーが発生することがある。

fatal: pathspec ‘hogehoge.jpg’ did not match any files

今回はこのエラーを解決するgit archiveコマンドを紹介する。

masterブランチと別のコミットIDの差分ファイルを取得する例

それでは早速例を見ていこう。

git archive --format=zip --prefix=archive/ master `git diff --name-only --diff-filter=ACMRTUXB 07b4d39 master` -o archive.zip

上記コマンドは、masterブランチからコミットID(07b4d39)までの差分をarchive.zipファイルに出力する例だ。

--diff-filterオプションにACMRTUXBを指定するのがポイントで、こうすることで削除ファイルを無視してそれ以外の差分のみを出力することができる。