SorceTreeで現在の差号を残しつつブランチを変える方法
※本ページはプロモーションが含まれていますgitを使って開発していると、「現在編集中の機能はイマイチだけど残しておきたい」とうときがあります。
その時は、stashを使い、現在の変更を一時的に対比させ、新しいブランチを作り、そこにコミットすればOKです。
gitコマンドでの手順
まずはgitコマンドでの手順。
既にコミットしている場合は、「git reset –soft HEAD^」を使い、変更は残しつつ直前のコミットに戻る。
windowsのコマンドプロンプトで使う場合は、「more?」と聞かれるので、「HEAD^」部分を囲う。
git reset --soft "HEAD^"
ここからが共通の操作。
stashを使って現在の変更を一時退避。(-uをつけると、untrackファイルも含めてstashしてくれる)
git stash -u
別のブランチを作成。(既に対比させたいブランチがあるならここは飛ばしてOK)
git branch <切り替えたいブランチ名>
保存しておきたいブランチへチェックアウト。
git checkout <切り替えたいブランチ名>
スタッシュを適用し、スタッシュを削除。
git stash pop
これで切り替えたブランチに移動した状態になり、変更したファイルがstashから戻ってきているのでコミット。
これで別ブランチに作業内容を移動させコミットできました。
元のブランチに戻って作業するなら、作業ブランチへチェックアウトすればOK。
SorceTreeでの操作
上記手順をSorceTreeで行います。
既にコミットしてある場合は、戻したいコミットを右クリックして「現在のブランチをこのコミットまでリセット」をクリック。
「使うモード」を「Soft」に変更。
「OK」をクリック。
これでコミットが戻り、コミットされていない変更がある状態になりました。
画面上部の「スタッシュ」をクリック。
「OK」をクリック。
コミットされていない変更が消えます(別の領域にスタッシュされた)
別に保存しておきたいブランチがない場合はブランチを作成する。「ブランチ」をクリック。
新規ブランチ名を入力し、「新規ブランチを作成してチェックアウト」にチェックが入っていることを確認し、「ブランチを作成」をクリック。
これでブランチが作成され、新規作成したブランチに移動した。
左メニューの「スタッシュ」をクリックし、適用したいスタッシュを右クリックして「~を適用」をクリック。
適用後、スタッシュを削除したい場合は「適用した変更を削除」にチェックを入れ「OK」をクリック。操作に不安がある場合は「適用した変更を削除」しないで、確実に要らなくなったときに削除するのが良い。
これで、新しいブランチに移動した状態で、先程変更した内容がもとに戻った。
後は、新しいブランチでコミットすればOK。
元のブランチに戻って作業する場合は元のブランチにチェックアウトするのを忘れずに。
おわりに
実装途中に、やっぱこれはないわ~というシーンは個人的に結構あります。
最初からブランチを分けていればこんな面倒なことにならないので、運用方法を見直す必要がありますね。