https://qiita.com/kaminaly/items/28f9cb4e680deb700833
https://rfs.jp/server/git/gite-lab/git-archive.html
指定した2コミット間の差分ファイルをディレクトリ構造を付きで出力するコマンド。
git archive HEAD `git diff --diff-filter=d --name-only HEAD^ HEAD` -o archive.zip
結局のところ欲しいのは変更したファイルの最新版なので、指定コミット間で変更した(削除分以外の)ファイルリストを取得して、最新コミットのバージョンからそれらのファイルをアーカイブしている。
.gitconfigに以下を追加しておくと楽。
diff-archive = "!f () { git archive HEAD `git diff --diff-filter=d --name-only $1 $2` -o archive.zip; };f"