git archive でコミット間差分のファイルをディレクトリ構造つきで取り出す

この記事は2分で読めます

このサイトは学部では早稲田で物理を, 修士では東大で数学を専攻し, 今も非アカデミックの立場で数学や物理と向き合っている一市民の奮闘の記録です. 運営者情報および運営理念についてはこちらをご覧ください.

中高の数学の復習から専門的な数学・物理までいろいろな情報を発信しています.
中高数学に関しては自然を再現しよう役に立つ中高数学 中高数学お散歩コース
大学数学に関しては現代数学観光ツアーなどの無料の通信講座があります.
その他にも無料の通信講座はこちらのページにまとまっています.
ご興味のある方はぜひお気軽にご登録ください!


結論: git archive をよしなに使う

結論から言えばSourceTreeの使い方 | コミット間の差分ファイルの抽出 (カスタム操作を使う方法)の記述通りにやればいい. この記事では特に SourceTree を使っている. Linux だと直接的には使えないけれども, Linux を使っているくらいの強い人なら直接 git patch で対応するだろうから対象外とする. そもそも本質的には git archive を使う話でしかなく, 下記の Mac 版のスクリプト (にあるコマンド) を使えばいい.

時々ウェブ上で昔の, 特にお気に入りの記事が消えて悲しい思いをすることも多いので, 必要な範囲で転記する.

バッチファイル作成

Windows では次の通り.

if "%2" EQU "" (
  set PARAM1=HEAD
  set PARAM2=%1
) else (
  set PARAM1=%1
  set PARAM2=%2
)

setlocal enabledelayedexpansion
set RET_DIR=
for /F "usebackq" %%i in (`git diff --name-only %PARAM1% %PARAM2%`) do (
  set RET_DIR=!RET_DIR! "%%i"
)

git archive --format=zip --prefix=archive/ %PARAM1% %RET_DIR% -o archive.zip

私個人としてはもう Mac は使っていないが, コマンドとして見やすいので置いておく.

#!/bin/sh
if [ "$2" = "" ]; then
    git archive --format=zip --prefix=archive/ HEAD `git diff --name-only HEAD $1` -o archive.zip
else
    git archive --format=zip --prefix=archive/ $1 `git diff --name-only $1 $2` -o archive.zip
fi

これを直接実行すれば Linux でも手法そのものは使える.

バッチファイルをカスタム操作として SourceTree へ登録

  • Win: メニューから「ツール」→「オプション」→「カスタム操作」タブ→「追加」ボタンをクリック
  • Mac: メニューから「SourceTree」→「環境設定」→「カスタムアクション」タブ→「追加」ボタンをクリック

「カスタム操作を編集」ウィンドウでの設定

  • メニュー表示名: 適当に設定 (ここでは「差分書き出し」とする)
  • 実行するスクリプト: 先程作ったスクリプトを指定
  • パラメーター: $SHA を設定

実行

  • 2 つコミットを選ぶ
  • 右クリックする
  • 「カスタム操作」から「差分書き出し」をクリック
  • リポジトリのトップディレクトリから zip を取ってくる

中高の数学の復習から専門的な数学・物理までいろいろな情報を発信しています.
中高数学に関しては自然を再現しよう役に立つ中高数学 中高数学お散歩コース
大学数学に関しては現代数学観光ツアーなどの無料の通信講座があります.
その他にも無料の通信講座はこちらのページにまとまっています.
ご興味のある方はぜひお気軽にご登録ください!

  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

このサイトについて

数学・物理の情報を中心にアカデミックな話題を発信しています。詳しいプロフィールはこちらから。通信講座を中心に数学や物理を独学しやすい環境づくりを目指して日々活動しています。
  • このエントリーをはてなブックマークに追加
  • LINEで送る

YouTube チャンネル登録

講義など動画を使った形式の方が良いコンテンツは動画にしています。ぜひチャンネル登録を!

メルマガ登録

メルマガ登録ページからご登録ください。 数学・物理の専門的な情報と大学受験向けのメルマガの 2 種類があります。

役に立つ・面白い記事があればクリックを!

記事の編集ページから「おすすめ記事」を複数選択してください。