Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save dsk52/181554eafc5953228d0c064b9da5eb89 to your computer and use it in GitHub Desktop.
Save dsk52/181554eafc5953228d0c064b9da5eb89 to your computer and use it in GitHub Desktop.

指定した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
}

使い方

  1. 差分を取得したいディレクトリまで移動
$ cd 差分を取りたいプロジェクトの場所
  1. 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. 1で調べたSHAを git_diff の後につけることで、HEADからそのコミットまでの差分を取得できる
$ git_diff commitのSHA

注意

  • コミットの仕方なのか、たまにファイルが無いというエラーが出る
  • 今回作った関数は、デスクトップに既に archive.zip があると出力できない
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment