Help us understand the problem. What is going on with this article?

すぐ忘れる!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

ryounagaoka
福岡に引きこもっている永遠の中2
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした