ポイント
git archive
とgit diff
を組み合わせる。- git archive –format=zip –output=
`git diff –name-only ` git diff --name-only <commit1> <commit2>
- –name-only: 差のあるファイル名のみを出力する。
git archive --format=zip --output=<file> <tree-ish> <path>
- コミットをアーカイブ出力する。
- –format=zip: 指定したファイル形式で出力する。
- –output=
: 指定したファイル名で出力する。 : 指定したコミット、ブランチ、HEAD などを出力する。 : 指定したパス、ファイルを出力する。
実践
2つ前のコミットと HEAD の差分をアーカイブいたします。
$ # 比較対象のコミットを確認 $ git log HEAD^^ commit b981ac0a08b8f3c9a6055c080d69a04fbbec23ba Auther: user1 <user1@example.com> Date: Mon Jun 20 10:58:16 2016 +0900 最初のコミット $ $ # ログの確認 $ git log --all --decorate --graph --oneline * 363e030 (HEAD -> master) Merge branch 'feature2-2' |\ | * 45ac64d (feature2-2) feature2-2完成 | * 64b9ebf (feature2) feature2完成 * | 7d60d9c Merge branch 'feature1' |\ \ | |/ |/| | * 824c7ae (feature1) feature1完成 |/ * b981ac0 最初のコミット $ $ # 2 つ前のコミットと HEAD の差分をアーカイブ $ git archive --format=zip --output=archive.zip HEAD `git diff --name-only HEAD HEAD^^` $
これで archive.zip が出力されましたわ♪
おわりに
次のページが参考になりました。ありがとう存じます♪
- git archive -Gitで管理しているファイルをアーカイブ| Gitテックラボ | [Smart]
- gitで差分ファイルを抽出する – Qiita
- [Git]コミット間の差分ファイルを取得する方法 | Coffee Breakにプログラミング備忘録
- Gitでexportするときはgit archiveとgit checkout-indexのどちらがよいか · DQNEO起業日記
以上です。