menu
  1. HOME
  2. News & Blog
  3. Git
  4. git tagで過去と現在のソースの差分をzipにまとめる

News & Blogニュース&ブログ

2014.06.05

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

medium_2368296322 本番環境にソースコードを適用するときに、前回適用したバージョンから現バージョンまでの適用をするのに苦労していましたが、ファイル数が多くなると効率が悪いのでなんとかならないかと思いはじめるようになり、差分ファイルを作成するための手順を書きます。

まず差分として比較したいコミットにタグを付ける

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・・古い方のタグ
で実行可能。

お気軽にご相談ください

株式会社アルベではIT、Webを使って皆様の課題解決のお手伝いをしています。
下記のようなお悩みを持つ方は、是非お気軽にご相談ください。

お問い合わせ