Git 差分ファイル抽出

git で差分ファイルを抽出する方法

クライアントに納品する時に、差分で欲しいと良く言われる。
誤上書きのリスクを避けられるのと、バグが出た時に原因を追いやすくするため。
gitを利用するだけで、差分用のディレクトリを手動で作成したり、タイムスタンプで確認など不毛な作業から解放される。

1
2
3
4
git archive --format=zip --prefix=root/ HEAD `git diff --name-only HEAD HEAD^` -o sample.zip
git archive --format=zip --prefix=root/ HEAD `git diff --name-only HEAD HEAD~1` -o sample.zip
git archive HEAD `git diff --name-only HEAD HEAD~1` -o sample.zip
git archive 3b4a6ca `git diff --name-only 3b4a6ca ea155fc ` -o sample.zip

git archive 説明

[ git archive ] アーカイブを作るコマンド

  • —format == 圧縮形式の指定
  • —prefix == 保存先のディレクトリ指定 ないとカレントディレクトリに保存される—prefix=root/でrootディレクトリに入れてくれる。
  • -o == 出力先とファイル名指定

git diff 説明

[ git diff ] 変更された箇所を表示するコマンド —name-only == ファイルパスを返してくれる


特定のリビジョンのアーカイブを作成

1
2
git archive HEAD -o sample.zip
git archive d4bb5fa -o sample.zip //ID7桁入力

-o オプションをつけないと、文字化けの文字列がターミナル上に表示され続けてクラッシュする。
前の時のが、効果がよかったから、丸々戻してくれと言われた時に便利


特定のファイル、ディレクトリをアーカイブする

1
2
git archive HEAD Gruntfile.js -o sample.zip
git archive d4bb5fa Gruntfile.js -o sample.zip //ID7桁入力

参考サイト