Web Analytics

こつこつエンジニア

現役アプリ開発者によるIT系特化ブログ

【Sourcetree】差分ファイル(パッチ)を作り適用する方法

f:id:madai21:20211014133126j:plain

はじめに

ローカルでSourcetreeにてコミットした差分をリモートリポジトリへプッシュはできないが、他のメンバーと共有したい場合どうすればいいでしょうか?
今回はその対処内容について書きたいと思います。

環境

この記事はSourcetree3.4.4での確認内容となります。
Sourcetree3.4.4は以下の場所から取得できます。
www.sourcetreeapp.com

Sourcetreeで差分を共有する方法

Sourcetreeでパッチファイル(差分ファイル)を作成することができるので、それで共有できます。

パッチファイルの作り方

例えば以下のようにtext4.txtにtestという一文を追記しローカルでコミットした(ローカル修正1をコミット済みの)状態であるとします。
f:id:madai21:20210917190732p:plain

このコミットのパッチファイルを作るには、Sourcetreeのメニューから[操作] → [パッチを作成]を順に選びます。
f:id:madai21:20210917191117p:plain

すると以下のようなダイアログが表示するので、
ダイアログに表示している樹形図からパッチを作成したいコミットを選択します(今回の場合はローカル修正1を選択します)
次にパッチファイルの保存先を入力します。
最後にパッチを作成のボタンを押しましょう。
f:id:madai21:20210917191207p:plain


すると指定場所に以下のようなパッチファイルが保存されます。
※このファイルだけで差分が分かりますのでレビューにも使えます
f:id:madai21:20210917191445p:plain

パッチファイルの適用の仕方

では作成したパッチファイルを適用してみたいと思います。
以下のようなパッチファイルを作成したリポジトリと異なるローカルリポジトリでパッチを適用してみましょう。
f:id:madai21:20210917192122p:plain

作成したパッチファイルはSourcetreeのメニューから[操作] → [パッチを適用]を順に選ぶことで適用することができます。
f:id:madai21:20210917191717p:plain

以下のようなダイアログが表示されるので、ファイル名に作成したパッチファイルを入力しパッチを適用ボタンを押します。
f:id:madai21:20210917191852p:plain

これでローカル修正1が適用されました。
f:id:madai21:20210917192224p:plain

パッチの適用ダイアログで選択できるモードとは?

パッチの適用ですが、気になる設定があります。
先ほどはさらっと流しましたが、モードで完全なコミットとして取り込むを選択していました。
f:id:madai21:20210917192555p:plain


このモードは3つ選べるようです。


  • 完全なコミットとして取り込む

  • 作業コピーファイルを修正

  • ステージングエリア(index)のファイルを修正

  • 完全なコミットとして取り込む以外の2つのモードについてもどうなるか確認してみましょう。

    作業コピーファイルを修正

    モードで作業コピーファイルを修正を選択してパッチを適用してみます。
    f:id:madai21:20210917192904p:plain

    すると以下のようにローカルでコミットした情報は適用されずに修正したファイルだけローカルに反映されるみたいです。
    ステージングはされていませんでしたので、修正したファイルだけローカルでコピーするモードみたいですね。
    f:id:madai21:20210917193055p:plain

    ステージングエリア(index)のファイルを修正

    次にモードでステージングエリア(index)のファイルを修正を選択してパッチを適用してみます。
    f:id:madai21:20210917193207p:plain

    すると修正した内容がステージングされていますね。
    f:id:madai21:20210917193315p:plain

    ただし、ローカルには修正したファイルはコピーされていませんので、ステージングした後に修正分が削除されたという状態になるようです。
    f:id:madai21:20210917193345p:plain

    おわりに

    パッチはレビューしてもらうため、テスト用に出力するコードを埋め込み他の人にそれでプログラムを実行してもらうため(これは不具合指摘をしてもらった環境でパッチを当ててログ出力してもらうなど考えられます)などなどで使えると思います。
    ソースコードの差分見せて下さいと言われたら、Sourcetreeでパッチを作成しそれを渡すと喜ばれると思います(多分)w