2014.06.05
git tagで過去と現在のソースの差分をzipにまとめる


まず差分として比較したいコミットにタグを付ける
Eclipseにegitプラグインを入れた上でプロジェクトで右クリック→拡張→タグ→拡張からコミットを選択して任意の名称でタグを付ける。Eclipseにはegitのプラグインが入っている前提です。タグコミットする
タグは普通にアップストリームへプッシュ何故かできないので、Eclipseにてプロジェクトで右クリック→リモート→プッシュ→次へ→「Add All Tag Spec」を選択し完了。タグ付けしたコミットと現状の差分を比較して、差分を出力
まず比較したいgitリポジトリ(xxx.git)へcdで移動 その後以下の様なコマンドを実行。 以下の例の場合、zipフォーマットで、rootという名称のルートフォルダ以降に、現状(HEAD)とタグ:initial_state_20140306の差分archive.zipという名称で出力する。git archive --format=zip --prefix=root/ HEAD `git diff --name-only HEAD initial_state_20140306` -o archive.zipたまにパスの指定がなされていないというエラーが出力される場合がある。その場合は
--diff-filter=M M:変更分 A:新規追加 D:削除 R:リネームなんかでフィルタリングすると指定のフォルダだけ出力する事が可能 (パスの指定されていないファイルがフィルタリングされたものの中になければok。あると同様のエラーは起きる)
HEADではなくtagとtagの間の差分を出力したい時は
git archive --format=zip --prefix=root/ tag1 `git diff --name-only tag0 tag1` -o /home/kanri/tag1.zip tag0・・新しい方のタグ tag1・・古い方のタグで実行可能。