指定したcommitとの差分を抽出するものは多かったが、指定したcommit までの 差分抽出の仕方を教えてくれるエントリはほぼ無くて、唯一見つけたのが以下。
git archive --format=zip --prefix=archive/ HEAD `git diff --name-only --diff-filter=ACMRTUXB SHA HEAD` -o ~/archive.zip
指定したcommitの差分ファイルをまとめてルートに出力してくれるというもの。 少し前に見つけてソースのページを忘れてしまった…
SHAの箇所を書き換えてから コマンドを実行する と多分動く
どっかにメモしておいて毎回コピペしつつSHA書き換えるのは面倒なので関数化した。
以下を .bash_profile
, .zprofile
なんかに書いておくと使える
#
# 指定commitまでの差分ファイルを抽出
# description: 指定したcommitの次からHEADまでの差分ファイルを抽出する
#
function git_diff() {
git archive --format=zip --prefix=archive/ HEAD `git diff --name-only --diff-filter=ACMRTUXB $1 HEAD` -o ~/Desktop/archive.zip
}
- 差分を取得したいディレクトリまで移動
$ cd 差分を取りたいプロジェクトの場所
- Towerや
$ git log
で、コミットの一覧を確認し、その中から今回の作業の中で1番最初にcommitしたモノの1つ前のコミットのSHA(英数の羅列されてるやつ)を調べる。 以下は$ git log
の結果。これのcommitの所を使う。
$ git log
commit 4e64809c4714da3111332413418c5dcba38087ca
Author: Daisuke KONISHI <[email protected]>
Date: Tue Jul 18 19:05:36 2017 +0900
アニメーションの追加とpjaxの処理の調整
commit 777197b77ebc754a7a9d01a223d4f7bfd722aec6
Author: Daisuke KONISHI <[email protected]>
Date: Tue Jul 18 18:19:17 2017 +0900
会社概要のpjax処理を追加
- 1で調べたSHAを
git_diff
の後につけることで、HEADからそのコミットまでの差分を取得できる
$ git_diff commitのSHA
- コミットの仕方なのか、たまにファイルが無いというエラーが出る
- 今回作った関数は、デスクトップに既に
archive.zip
があると出力できない