Git操作をGUIで行えるSourceTreeは、私にとって今では無くてはならない存在です。
コレのお陰で、ターミナル恐怖症のデザイナーさんにもGitでファイルの変更を管理してもらえるようになって、デザイナーさんとの連携がとても楽になりました。
もう、これなしでは開発したくないと思えるほど便利です。
でもSourceTreeのいくつかの機能はお世辞にも直感的とは言えず、間違った操作を誘発する危険性をはらんでいます。私もハマって結構大変な目に会いました。
私が、そして私のような方が同じ過ちをおかさないように、ここにハマりそうなSourceTree操作を記録しておきます。
リベース手順
例えば、developブランチから分岐したfeature/hogeブランチで作業している途中で、他の開発者のコミットがdevelopブランチにマージされた場合、後々大きなコンフリクトが発生するのが怖いので、早めにdevelopの先頭にリベースしたくなります。
こういう時は以下の手順で作業します。
- feature/hogeブランチをダブルクリックしてチェックアウトする。
- グラフ上でdevelopブランチの先端を右クリックして「リベース」をクリック。
- 競合が発生しなければこれで終わり。
- 競合が発生したら、サイドバーの**「作業コピー」**をクリックして、コンフリクトしてるファイルを確認し、エディタで競合を解決する。
- 作業ツリーのファイル一覧から競合を解決したファイルを右クリックして、「競合を解決」->**「解決済みにする」**をクリック。
- メニューから**「操作」->「リベースを続ける」**をクリック。
- もしまた競合が発生したら、4〜6の作業を繰り返す。
特に手順5の後にコミットメッセージを入力してコミットしてしまうというミスを犯しやすいので注意が必要です。
スカッシュ手順
例えば、masterブランチから分岐したfeature/hogeブランチで、作業を進めるうちに、以下の様に恥ずかしいコミットメッセージや無駄なコミットが蓄積してたとします。
このままmasterにマージするのはマズイですよね。
汚いコミット履歴をまとめて、1つのきれいなコミットに書き換えたい場合には以下の様にします。