git で一つ前のコミットとのdiffをとってarchiveするのに手間取った
HEAD^ と HEAD の間でtest.htmlといういらないファイルを削除してたとき、
このへん、やこのへんを参考に、
下記のようなコマンドをうっていた。
git archive --format=zip HEAD `git diff --name-only --diff-filter=AMCR HEAD HEAD^` -o archive.zip
すると
fatal: path spec 'test.html' did not match any files
と怒られた.
問題は、HEAD HEAD^の部分で、新しい→古い のgit diff のため、test.htmlは新しいHEADからすると ADD状態になるということ。
つまり、 "--diff-filter=AMCR"だと、test.htmlまで含まれてしまうのだ! "--diff-filter=MCRD" でうまくいくが、気持ち悪いので、
git archive --format=zip HEAD `git diff --name-only --diff-filter=AMCR HEAD^ HEAD` -o archive.zip
のように、HEAD^(古い) → HEAD(新しい) で設定し、
diff-filter をAMCR にして、test.htmlが抽出されなくなった。
よかった!