差分ファイルだけ 納品してください という事が あるのですが
納品時には もう どのファイルを 修正したか覚えていないことのほうが多いかと思います

そんな時 Git で 管理していれば 修正したファイルが 取得できるのです

( 私の環境は Mac なので Windowsの人は コードが異なります )


シェルスクリプトで取得する


コミットID を 2つ指定して その差分を ZIP で 取得します

HEAD から 取得する場合は COMMIT_1 に HEAD を 指定すれば OK です

出力先は Downloads / Sourcetree 以下に archive_[日付].zip で 出力されます
( Sourcetree ディレクトリは 事前に作成しておいてください )

#!/bin/sh
# -*- coding: utf-8 -*-

COMMIT_1="1234567"
COMMIT_2="7654321"

# --------------------------------------------------------------------------------------------------

git archive ${COMMIT_1} `git diff --name-only ${COMMIT_2} ${COMMIT_1} --diff-filter=ACMR` -o ~/Downloads/Sourcetree/archive_`date "+%Y%m%d_%H%M%S"`.zip

Sourcetreeで取得する


Sourcetree に カスタムアクション として 登録することで 差分のファイルを 取得することができます


シェルスクリプト の 作成


任意のディレクトリに シェルスクリプトを 作成します

#!/bin/sh
# -*- coding: utf-8 -*-

if [ "$2" = "" ]; then
  COMMIT_1="HEAD"
  COMMIT_2=$1
else
  COMMIT_1=$1
  COMMIT_2=$2
fi

# --------------------------------------------------------------------------------------------------

git archive ${COMMIT_1} `git diff --name-only ${COMMIT_2} ${COMMIT_1} --diff-filter=ACMR` -o ~/Downloads/Sourcetree/archive_`date "+%Y%m%d_%H%M%S"`.zip

作成した スクリプトには 実行権限を 与えておいてください


Sourcetree に カスタムアクション を 追加


Sourcetree での 設定
「SourceTree」→「環境設定」→「カスタムアクション」タブ→「追加」

カスタムアクション 登録時
[メニューキャプション] は 任意の名前で 大丈夫です
[実行するスクリプト] に 先程作成した シェルスクリプトファイル を 指定する
[パラメーター] に [$SHA] を 指定する

ワークスペース の 履歴 から 範囲指定して 差分 して 右クリックで カスタムアクション を 選択

先程指定した [メニューキャプション] が 追加されているはずなので そちらを 選択

先程と同様に Downloads / Sourcetree 以下に archive_[日付].zip で 出力されます


人力で 差分ファイルを 集めようとすると どうしても 見落とし や 抜けが あったり ディレクトリ構造 が 崩れたりするので Git から 集めてられるのは 便利ですね

さらに Sourcetree の カスタムアクション を 登録しておけば 次回から 対象を指定して 実行するだけなので コンソール画面が怖い人にも 優しいですね

Related Article

Visual Studio Code が Ver 1.0.0 に なって 公開されました!!

詳細へ »

macOS Sierra に 開発環境 を 再セットアップ する

詳細へ »

ファイルやディレクトリのパーミッションを一括で置換したい

詳細へ »