Web Analytics

こつこつエンジニア

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

【Sourcetree】樹形図に履歴が残るMergeをする

f:id:madai21:20211014135324j:plain



はじめに

今回はmasterブランチとdevelopブランチの二つブランチがある状態でdevelopブランチの修正分をmasterブランチに取り込むべくGitのMergeをSourcetreeで行いたいと思います。

手順

1. masterブランチがカレントブランチの状態でdevelopブランチの修正分を取り込むべくマージボタンを押します。

f:id:madai21:20210709213825p:plain

2. マージしたいdevelopブランチのコミットを選択してOKボタンを押します。

f:id:madai21:20210709213758p:plain

3.こうなりました、樹形図(ツリー)にマージが表示されていないですね。。

masterブランチにdevelopブランチの修正分をマージできていますが、これでは樹形図でdevelopブランチのマージをmasterブランチがマージしたという履歴が残ってませんよね^^;

これでもいい場合もあるかと思いますが、ブランチで分けている以上どのようにmasterブランチに合流したのか後で知りたくなると思います。

f:id:madai21:20210709214129p:plain

本来ならばこうであって欲しいですよね?

f:id:madai21:20210709214459p:plain

4. 一度コミットを取り消します。

戻したいコミットを選択し右クリック、現在のブランチをこのコミットまでリセットを選択します。

使うモードに今回は「Hard - 全ての作業コピーの変更を破棄する」を選択し、OKボタンを押します。

※今回はHardを選択していますが、普段はMixedやSoftを使うことをおすすめします。

Hardは自分で修正していた変更分も消して完全にコミットを前の状態に戻すのでかなり危険です^^;

説明用にHardを使わせて頂いていますが私は普段怖くてHardは使ったことありません。。

f:id:madai21:20210709214915p:plain

f:id:madai21:20210709214954p:plain

f:id:madai21:20210709215045p:plain

怖いですねww

でも今回は「はい」ボタンを押しちゃいます^^w

f:id:madai21:20210709220100p:plain

5. これでコミット前の状態に戻りました。

樹形図にマージが表示されない対策を行うには直接Gitコマンドを使ってマージを行います。

ターミナルボタンを押しましょう。

f:id:madai21:20210709213739p:plain

6. ターミナル画面が開いていると思います。

f:id:madai21:20210707215153p:plain

以下のコマンドを入力して下さい。

git merge develop --no-ff

すると以下の画面が表示されると思います。

f:id:madai21:20210709220207p:plain

以下のコマンドだけを入力しEnterキーを押してください。

:q!

このメッセージが出ていればマージ成功です。

ターミナル画面は閉じましょう。

f:id:madai21:20210709221557p:plain

7. これで樹形図上でdevelopブランチをmasterブランチがマージしたのが残るようになりました^^

ついでにリモートリポジトリにpushもしちゃいましょう。

f:id:madai21:20210709214459p:plain

いい感じですね^^

f:id:madai21:20210709221816p:plain

おわりに

多人数で開発する際はdevelopブランチをさらに詳細な各機能のブランチ(feature_XXXのような)に分ける場合もあると思います。

その際に今回のように樹形図に残るMergeをしていけば、後でどのタイミングで機能を取り込んだのかパッと見てわかりやすくなると思いますのでおすすめのマージ方法です^^