【Sourcetree】差分ファイル(パッチ)を作り適用する方法
はじめに
ローカルでSourcetreeにてコミットした差分をリモートリポジトリへプッシュはできないが、他のメンバーと共有したい場合どうすればいいでしょうか?
今回はその対処内容について書きたいと思います。
環境
この記事はSourcetree3.4.4での確認内容となります。
Sourcetree3.4.4は以下の場所から取得できます。
www.sourcetreeapp.com
Sourcetreeで差分を共有する方法
Sourcetreeでパッチファイル(差分ファイル)を作成することができるので、それで共有できます。
パッチファイルの作り方
例えば以下のようにtext4.txtにtestという一文を追記しローカルでコミットした(ローカル修正1をコミット済みの)状態であるとします。
このコミットのパッチファイルを作るには、Sourcetreeのメニューから[操作] → [パッチを作成]を順に選びます。
すると以下のようなダイアログが表示するので、
ダイアログに表示している樹形図からパッチを作成したいコミットを選択します(今回の場合はローカル修正1を選択します)
次にパッチファイルの保存先を入力します。
最後にパッチを作成のボタンを押しましょう。
すると指定場所に以下のようなパッチファイルが保存されます。
※このファイルだけで差分が分かりますのでレビューにも使えます。
パッチファイルの適用の仕方
では作成したパッチファイルを適用してみたいと思います。
以下のようなパッチファイルを作成したリポジトリと異なるローカルリポジトリでパッチを適用してみましょう。
作成したパッチファイルはSourcetreeのメニューから[操作] → [パッチを適用]を順に選ぶことで適用することができます。
以下のようなダイアログが表示されるので、ファイル名に作成したパッチファイルを入力しパッチを適用ボタンを押します。
これでローカル修正1が適用されました。
パッチの適用ダイアログで選択できるモードとは?
パッチの適用ですが、気になる設定があります。
先ほどはさらっと流しましたが、モードで完全なコミットとして取り込むを選択していました。
このモードは3つ選べるようです。
完全なコミットとして取り込む以外の2つのモードについてもどうなるか確認してみましょう。
作業コピーファイルを修正
モードで作業コピーファイルを修正を選択してパッチを適用してみます。
すると以下のようにローカルでコミットした情報は適用されずに修正したファイルだけローカルに反映されるみたいです。
ステージングはされていませんでしたので、修正したファイルだけローカルでコピーするモードみたいですね。
ステージングエリア(index)のファイルを修正
次にモードでステージングエリア(index)のファイルを修正を選択してパッチを適用してみます。
すると修正した内容がステージングされていますね。
ただし、ローカルには修正したファイルはコピーされていませんので、ステージングした後に修正分が削除されたという状態になるようです。
おわりに
パッチはレビューしてもらうため、テスト用に出力するコードを埋め込み他の人にそれでプログラムを実行してもらうため(これは不具合指摘をしてもらった環境でパッチを当ててログ出力してもらうなど考えられます)などなどで使えると思います。
ソースコードの差分見せて下さいと言われたら、Sourcetreeでパッチを作成しそれを渡すと喜ばれると思います(多分)w