【Sourcetree】stashしてからmasterブランチを作業ブランチにマージする方法

sourcetree-eyecatch

おっくソ

こんにちは、おっくソです。

Sourcetreeを使っていて、作業ブランチでの変更をstash(スタッシュ)としていったん取っておいて、masterブランチをマージするということをしたので手順をまとめました。

masterをマージした後に、取っておいたstashを適用することで、いったんmasterを最新にしてから作業ブランチの変更内容を取り込むことができます。

コンフリクト(変更内容の衝突)は起きるので、適宜修正し、衝突の解決を行います。

ここでの作業ブランチは開発ブランチなどの自分が更新していくブランチのことを指しています。

下の画像でいう1687ブランチのことを作業ブランチと呼んでいます。

作業ブランチの変更分をstashへ登録する

sourcetreeでスタッシュする画像

作業ブランチ(この画像でいうと1687ブランチ)をチェックアウトしていることを確認する。

していない場合は作業ブランチをダブルクリックするか、右クリックしてチェックアウトをクリックする。

画像のように作業ブランチの左側に〇が付いていればOK。

その状態で、スタッシュをクリックし、スタッシュに名前をつけて「OK」をクリック。

スタッシュの名前には、ブランチ名や日時を入れると分かりやすいと思います。

スタッシュに登録完了した画像

スタッシュに登録できると、画像のように画面左側のスタッシュのところに追加される。

masterを最新にする

これからマージしたいmasterブランチをまず最新にしましょう。

masterブランチをフェッチ、プルする

masterブランチをチェックアウトします。

そしてフェッチします。

そのあとプルします。

フェッチやプルをクリックするとポップアップが出てきて、チェックボックスがいくつかあると思いますが、基本的にはデフォルトの状態で「OK」をクリックしてOKです。

masterブランチをマージ

masterブランチをマージする画像

ではmasterブランチを作業ブランチにマージしていきます。

まず作業ブランチ(masterをマージする先)をチェックアウトします。

そしてmasterを右クリックし、「現在のブランチにmasterをマージ」をクリックします。

masterのマージの確認画面の画像

確認画面が出てきますが、そのまま「OK」。

スタッシュを適用

スタッシュを適用する画像

masterブランチのマージが成功したら、取っておいた作業ブランチの変更分であるスタッシュを適用します。

適用するスタッシュを右クリックし、「スタッシュ ~ を適用」をクリック。

スタッシュ適用の確認画面の画像

確認画面が出てきますが、そのまま「OK」。

ここで「適用した変更を削除」というチェックボックスが出てきますが、画像のようにチェックすると適用したスタッシュは自動で削除されます。

慣れるまではチェックする必要はないと思います。

コンフリクトを修正

スタッシュ適用後のコンフリクト発生画面の画像

スタッシュ適用後、おそらくエラーが発生するかと思います。

画像のように三角形「!」が表示されているのがエラーが発生しているファイルです。

その理由は、マージしたmasterによる変更点とスタッシュによる変更点がコンフリクトするからです。(同じファイルの同じ部分が修正されているため)

なのでエラーが発生しているファイルを適宜修正する必要があります。

エディターで対象のファイルを開くと、以下のように表示されます。(画像はVisual Studio Codeのもの)

エディターでコンフリクトが起きている画面の画像
引用元:今日からUnity + Visual Studio Codeを用いた快適な開発生活

この画像では表示が異なりますが、masterによる変更分なのか作業ブランチのスタッシュによる変更分なのか分かるように表示されます。

そこでどちらかの変更分のみ取り込むのか、両方取り込んだうえで手で修正するのかを選択できます。

取り込む際は変更内容をよく見るようにしてください。(取り込んだ後に、Ctrl + Zすると戻れますが。)

衝突を解決する

衝突を解決する画面の画像

コンフリクトを修正したら、Sourcetreeに戻って、対象のファイルを右クリック→「競合を解決」→「解決とマーク」をクリック。

確認画面が出てきますが「OK」をクリック。

 

これで三角形の「!」から他のマークに変わるはずです。

無事マークが変わったらコンフリクトが解決です。

これをコンフリクトのエラーが起きているファイルすべてに行うことができれば、スタッシュを使ったmasterのマージ作業は完了です。

 

では今回はこの辺で。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です