git SourceTreeでのリベースやスカッシュ

すぐ忘れる!SourceTreeを使ったリベースとスカッシュの手順

SourceTreeこの記事は最終更新日から3年以上が経過しています。

Git操作をGUIで行えるSourceTreeは、私にとって今では無くてはならない存在です。
コレのお陰で、ターミナル恐怖症のデザイナーさんにもGitでファイルの変更を管理してもらえるようになって、デザイナーさんとの連携がとても楽になりました。
もう、これなしでは開発したくないと思えるほど便利です。

でもSourceTreeのいくつかの機能はお世辞にも直感的とは言えず、間違った操作を誘発する危険性をはらんでいます。私もハマって結構大変な目に会いました。

私が、そして私のような方が同じ過ちをおかさないように、ここにハマりそうなSourceTree操作を記録しておきます。

リベース手順

例えば、developブランチから分岐したfeature/hogeブランチで作業している途中で、他の開発者のコミットがdevelopブランチにマージされた場合、後々大きなコンフリクトが発生するのが怖いので、早めにdevelopの先頭にリベースしたくなります。
こういう時は以下の手順で作業します。

  1. feature/hogeブランチをダブルクリックしてチェックアウトする。
  2. グラフ上でdevelopブランチの先端を右クリックして「リベース」をクリック。
  3. 競合が発生しなければこれで終わり。
  4. 競合が発生したら、サイドバーの「作業コピー」をクリックして、コンフリクトしてるファイルを確認し、エディタで競合を解決する。
  5. 作業ツリーのファイル一覧から競合を解決したファイルを右クリックして、「競合を解決」->「解決済みにする」をクリック。
  6. メニューから「操作」->「リベースを続ける」をクリック。
  7. もしまた競合が発生したら、4〜6の作業を繰り返す。

特に手順5の後にコミットメッセージを入力してコミットしてしまうというミスを犯しやすいので注意が必要です。

スカッシュ手順

150614-0005.png

例えば、masterブランチから分岐したfeature/hogeブランチで、作業を進めるうちに、以下の様に恥ずかしいコミットメッセージ無駄なコミットが蓄積してたとします。

このままmasterにマージするのはマズイですよね。
汚いコミット履歴をまとめて、1つのきれいなコミットに書き換えたい場合には以下の様にします。

  1. feature/hogeブランチをダブルクリックしてチェックアウトする。
  2. グラフ上でブランチの分岐元(この例だとfacea0b)を右クリックして、「xxxxxxの子を対話形式でリベース」をクリック。
  3. ダイアログ上で、一番上のコミットを選んだ状態で「過去を含めてsquashする」をクリック。クリックする度に1つずつ過去のコミットがスカッシュ対象に加えられるので、以下の様に全てのコミットがスカッシュ対象になるまでクリックする。 
  4. 「メッセージを編集」をクリックしてコミットメッセージを入力。
  5. OKボタンを押して完了。

すると、以下の様なきれいな歴史に書き換わります。

https://qiita.com/ryounagaoka/items/7c129e98a7f81c507a61
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク