MacのSourceTreeで差分ファイルを取得

2021-02-19 22:28

この方法ももっと早く知ってれば、2019年の幾度とない失敗を防げてたかも知れないのに・・・

とはいえ、今更でもないので、メモメモ。

準備

環境は、

macOS Mojave バージョン 10.14.6
SourceTreeバージョン 4.1.2

バッチファイルの作成

バッチファイル(シェルスクリプト)「export_diff.sh(のようなファイル名)」を任意の場所に作成し、git checkout-indexコマンドを登録します。

export_diff.sh
#!/bin/sh git checkout-index -f --prefix=diff/ `git diff --name-only `

git checkout-indexコマンドを使うことでリポジトリからファイルをエクスポートできます。

ただ、作成したシェルスクリプトは実行権限を付与しないと実行時にlaunch path not accessibleエラーになるので、ターミナルから下記のコマンドを実行して権限を与えておきます。


$ chmod +x export_diff.sh

カスタムアクションを登録

SourceTreeの機能「カスタムアクション」を登録します。

Macのメニューバーの「SourceTree」から「環境設定」を開き、「カスタムアクション」タブを表示し、「追加」ボタンをクリックします。

20210219_git_diff_1.jpg

「メニューキャプション」に任意のカスタムアクション名を入力し、「実行するスクリプト」に先ほど作成したバッチファイルを指定、「パラメータ」には$SHAを入力します。

「OK」ボタンをクリックし、カスタムアクションの登録は完了です。

20210219_git_diff_2.jpg

差分ファイルを取得

SourceTreeのワークツリーの取得したい行を選択します。

20210219_git_diff_3.jpg

右クリックでコンテキストメニューを表示させ、「カスタムアクション」から先ほどメニューキャプションに登録したカスタムアクション名をクリックし、カスタムアクションを実行します。

20210219_git_diff_4.jpg

応用

1階層上のディレクトリで管理

上記した方法だと、gitの監視下(SourceTreeのワークツリー内)に生成されるため、管理するためにエクスポートした感じにならないような・・・そうでもないような・・・

なんてことも考えられるので、1階層上のディレクトリの「diff」ディレクトリに日付名のサブディレクトリを生成して管理する方が便利かもしれません。

export_diff.sh
#!/bin/sh date=`"%Y%m%d"` git checkout-index -f --prefix=../diff/$date/ `git diff --name-only `