Web Analytics

こつこつエンジニア

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

【Sourcetree】リベースする

はじめに

ブランチでちまちまコミットしているうちに親ブランチでかなりコミットされてしまっている・・・
親ブランチの最新のコミットでブランチを作ったことにして、そこからコミットしたことにしたい・・・

これを


こうしたい・・・


どうすればいいでしょうか?
今回はSourcetreeのリベースという機能でブランチの派生元を置き換えたい(リベースしたい)と思います。

環境

この記事はSourcetree3.4.9での確認内容となります。
Sourcetree3.4.9は以下の場所から取得できます。
www.sourcetreeapp.com

リベースしてみる

Gitがこんな状態だとします。
hogeブランチをmasterブランチのfirst commitではなくthird commitから作成したことにしたい場合、
masterブランチのthird commit上で右クリックします。

すると、このようなポップアップメニューが表示されるのでリベースを押しましょう。

OKを押します。


簡単ですね、これだけでリベース完了です^^

リベースしたらなんか怒られたんだけど、どうしたらいいの・・・

リベースしたらこんなマージの競合という画面出た場合ですが、

これはブランチでのコミットとリベース元のコミットのどこかで同じファイルを更新しているので、
Sourcetreeがどうしたらいいか困っているので助けて・・・という状態になっています。
衝突しているファイルを確認して衝突を解決しましょう。


今回はこのfile1.txtというファイルが衝突していますね。
衝突個所は「~HEAD」という行で判断できます。
ファイルを直接修正してマージします。
※~HEADなどの衝突を示す行は忘れずに削除しておきましょう。


修正後こうなります。
ファイルを選択して右クリックを押します。

競合を解決、解決とマークの順に押していきます。

OKを押します。

これですべてのファイルがステージングされました。


メニューから[操作] - [リベースを続ける]を選択します。


OKを押します。


閉じるボタンがどこにもないですね・・
チェックを付けましょう。

すると閉じるボタンが表示されます。
閉じるを押しましょう。


これでリベース完了です。

衝突したファイルのマージミスったからリベースをやりなおしたい・・・

大丈夫です、リベースのキャンセルできます。
メニューから[操作] - [リベースを中止]を押します。


するとなかったことにできます、便利ですね!

おわりに

リベース機能はかなり便利なので積極的に使ってみてください^^
もうこれで気にせず機能ごとにブランチを切りまくっても安心ですね。