この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
おっくそ
Sourcetreeを使っていて、作業ブランチでの変更をstash(スタッシュ)としていったん取っておいて、masterブランチをマージするということをしたので手順をまとめました。
masterをマージした後に、取っておいたstashを適用することで、いったんmasterを最新にしてから作業ブランチの変更内容を取り込むことができます。
コンフリクト(変更内容の衝突)は起きるので、適宜修正し、衝突の解決を行います。
ここでの作業ブランチは開発ブランチなどの自分が更新していくブランチのことを指しています。
下の画像でいう1687ブランチのことを作業ブランチと呼んでいます。
作業ブランチの変更分をstashへ登録する
作業ブランチ(この画像でいうと1687ブランチ)をチェックアウトしていることを確認する。
していない場合は作業ブランチをダブルクリックするか、右クリックしてチェックアウトをクリックする。
画像のように作業ブランチの左側に〇が付いていればOK。
その状態で、スタッシュをクリックし、スタッシュに名前をつけて「OK」をクリック。
スタッシュの名前には、ブランチ名や日時を入れると分かりやすいと思います。
スタッシュに登録できると、画像のように画面左側のスタッシュのところに追加される。
masterを最新にする
これからマージしたいmasterブランチをまず最新にしましょう。
masterブランチをチェックアウトします。
そしてフェッチします。
そのあとプルします。
フェッチやプルをクリックするとポップアップが出てきて、チェックボックスがいくつかあると思いますが、基本的にはデフォルトの状態で「OK」をクリックしてOKです。
masterブランチをマージ
ではmasterブランチを作業ブランチにマージしていきます。
まず作業ブランチ(masterをマージする先)をチェックアウトします。
そしてmasterを右クリックし、「現在のブランチにmasterをマージ」をクリックします。
確認画面が出てきますが、そのまま「OK」。
スタッシュを適用
masterブランチのマージが成功したら、取っておいた作業ブランチの変更分であるスタッシュを適用します。
適用するスタッシュを右クリックし、「スタッシュ ~ を適用」をクリック。
確認画面が出てきますが、そのまま「OK」。
ここで「適用した変更を削除」というチェックボックスが出てきますが、画像のようにチェックすると適用したスタッシュは自動で削除されます。
慣れるまではチェックする必要はないと思います。
コンフリクトを修正
スタッシュ適用後、おそらくエラーが発生するかと思います。
画像のように三角形「!」が表示されているのがエラーが発生しているファイルです。
その理由は、マージしたmasterによる変更点とスタッシュによる変更点がコンフリクトするからです。(同じファイルの同じ部分が修正されているため)
なのでエラーが発生しているファイルを適宜修正する必要があります。
エディターで対象のファイルを開くと、以下のように表示されます。(画像はVisual Studio Codeのもの)
この画像では表示が異なりますが、masterによる変更分なのか作業ブランチのスタッシュによる変更分なのか分かるように表示されます。
そこでどちらかの変更分のみ取り込むのか、両方取り込んだうえで手で修正するのかを選択できます。
取り込む際は変更内容をよく見るようにしてください。(取り込んだ後に、Ctrl + Zすると戻れますが。)
衝突を解決する
コンフリクトを修正したら、Sourcetreeに戻って、対象のファイルを右クリック→「競合を解決」→「解決とマーク」をクリック。
確認画面が出てきますが「OK」をクリック。
これで三角形の「!」から他のマークに変わるはずです。
無事マークが変わったらコンフリクトが解決です。
これをコンフリクトのエラーが起きているファイルすべてに行うことができれば、スタッシュを使ったmasterのマージ作業は完了です。
では今回はこの辺で。