SourceTreeを使ってコミット間の差分ファイルを出力してみよう🥳

Coding

SourceTreeを使ってコミット間の差分ファイルを出力してみよう🥳

こんにちは、AndHAコーディング部です。

前回の記事ではGitの基本を学びました。
:目指せ!脱初心者 Gitの基本を図解で解説

Gitでファイル管理していると様々な事が行えますが、その中でも便利な機能としてコミット間の差分出力を行ってみたいと思います。

  • 今回はGitクライアントソフトのSourceTreeからカスタムアクションを追加して差分抽出を行います。
  • Mac(macOS 10.15.7)環境で記事作成していますがWindowsでも使えるコードを掲載しています。

用意する物

  • SourceTree本体
  • すでに管理されているGitブランチ
  • バッチファイル(記事内で解説していきます。)

この記事を読むことでできるようになること

  • コミット間の差分テキストファイル出力
  • コミット間の差分ファイル出力(zip)

バッチファイルの用意

バッチファイルとは、実行させたい命令文をテキストファイルに記述したファイルの事です。
今回は差分ファイル抽出が目的なので、命令文を記述していきましょう。

まず、テキストエディタなどで新規ファイルを作成し、以下のコードをコピー&ペーストしてください。

差分ファイルをテキストで出力したい場合

Mac(.sh)

Windows(.bat)

コードの解説を行いますが、不要な方は読み飛ばしてください。

終わりましたらファイル名をdiff_list等とし、拡張子を.shに変更して保存してください。
(Windowsの場合は拡張子を.batに変更して保存して下さい。)

差分ファイルをzip形式で出力したい場合

Mac(.sh)

Windows(.bat)

コードの解説を行いますが、不要な方は読み飛ばしてください。

終わりましたらファイル名をdiff_archive等とし、拡張子を.shに変更して保存してください。
(Windowsの場合は拡張子を.batに変更して保存して下さい。)

作ったバッチファイルをSourceTreeに登録

作ったバッチファイルをカスタムアクションに追加していきましょう。
Sourcetreeを起動させ、スクリーンショットの様に環境設定を開いていきます。

Sourcetreeを起動させ、スクリーンショットの様に環境設定を開いていきます。
環境設定を開いたら、カスタムアクション タブをクリックし、右下の追加ボタンをクリックすると下記SSの画面が表示されます。
(Windowsの場合はカスタムアクションではなくカスタム操作という名称に置き換えて下さい。)

カスタムアクション設定画面
メニューキャプションは表示されるラベル名となりますので、自分で分かりやすい名前を付けると良いでしょう。
次に、実行するスクリプトでは、先ほど作成したバッチファイルを指定します。
最後にパラメータには $SHA を指定してください。
OKをクリックすると登録が完了します。

登録したカスタムアクションを実行

これまでの行程が終わりましたら、いよいよカスタムアクションを実行してみましょう。
仮として下記の様なプロジェクトが存在していたと仮定して、差分ファイルを出力してみます。

登録したカスタムアクションを実行
まず、取り出したい最終コミットを選択し、続いてcommandキーを押しながら元コミットをクリックします。
(Windowsの場合はCtrキーになります。)
上記例は最初から最終作業までのコミットを範囲としています。

右クリックして表示されるメニュー中からカスタムアクション > 作ったカスタムアクション名を選び、クリックします。
次に右クリックして表示されるメニュー中からカスタムアクション > 作ったカスタムアクション名を選び、クリックします。
処理が完了すると、Git対象ディレクトリ内にそれぞれファイルが生成されます。

処理が完了すると、Git対象ディレクトリ内にそれぞれファイルが生成されます。

生成されたアーカイブファイル
生成されたアーカイブファイル
生成されたテキストファイル
生成されたテキストファイル

ちなみに、最新から下記指定した所までの差分を出力したい場合には以下の様な結果が得られます。
最新から下記指定した所までの差分を出力したい場合には以下の様な結果が得られます。

生成されたアーカイブファイル2
生成されたアーカイブファイル2
生成されたテキストファイル2
生成されたテキストファイル2

テキストで出力した場合に先頭に文字が入っているのが分かると思います。
この時表示されている変更ステータスは以下の通りになります。

フィルタ 意味
M 修正
A 追加
C コピー
R リネーム
D 削除
R100 希に出てきますが、リネームされたもので内容は100%一致を指します。

まとめ

今回はSourcetreeを使ったコミット間の差分ファイル抽出を紹介しました。
Gitで管理するメリットを感じていただけたと思いますが、まだまだこれだけではありません。
中規模以上はもちろんのこと、小規模・個人で制作する場合にもGitをセットで使っていく習慣をつけておくことで、いざというときに必ず役に立つことでしょう。

次回はGithub Actionを利用した自動デプロイを紹介していきます。
それでは、また。