Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
430
Help us understand the problem. What is going on with this article?
@ryounagaoka

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

More than 5 years have passed since last update.

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

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

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

リベース手順

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

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

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

スカッシュ手順

例えば、masterブランチから分岐したfeature/hogeブランチで、作業を進めるうちに、以下の様に恥ずかしいコミットメッセージ無駄なコミットが蓄積してたとします。
150614-0005.png
このままmasterにマージするのはマズイですよね。
汚いコミット履歴をまとめて、1つのきれいなコミットに書き換えたい場合には以下の様にします。

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

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

430
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ryounagaoka
お金さえ頂けたら何でも作ります。 お金を頂かなくても面白いものなら作ります。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
430
Help us understand the problem. What is going on with this article?