【TortoiseGit】コマンド不要でGit管理②-スタッシュ-
前回は基本操作を中心に「TortoiseGit」の使い方を見ていきましたので、今回はスタッシュという機能について紹介していきたいと思います。
前回の記事はこちらです【TortoiseGit】コマンド不要でGit管理
なお今回はベル君との対話形式をはさみつつ、作業中に起きるシチュエーションごとに説明していきます。
ベル君?
はい。前回の記事で出てきたキツネみたいなキャラクターです。
でもフェネックです。
執筆もまだ手探りです。
何事もトライ・アンド・エラーですね。
こんな時に便利
ブランチを切って作業をしている時にこんな経験はありませんか?
・ブランチAで作業している途中でブランチBの作業をしなければならなくなった
・ブランチCで作業しなければいけないのに間違えてブランチDで作業してしまった
ブランチAはまだコミットできる状態じゃないし、
ブランチCはリモートからプルしたファイルを変更しないと・・・
作業しているブランチでの変更が多ければ多いほど頭が痛くなりますよね。
もう全部なかったことにしよう!
ダメだね。
筆者も以前はあきらめて変更したファイルをどこか別の場所に保存しておいて、
「変更の取り消し」でいったんそのブランチでの今までの作業を取り消していました。
でもGitのスタッシュ機能を使えば、変更の差分を一時的に退避させておくことができます。
もちろん退避させた変更はあとで好きな時に再度元に戻すことができます。
変更を一時退避する
「test.txt」が変更されている「branchA」ブランチがあります(下の画像)。
「スタッシュへ変更を隠す」をクリック。
どの作業のスタッシュなのかがわかるメッセージを入力します。
新規に追加したファイルがあれば「バージョン管理外のファイルを含む」にチェックを入れて「OK」。
成功すれば「test.txt」のアイコンが変わり、このブランチでの変更が取り消され変更前の状態に戻っていることが確認できます。
退避した変更を戻す
「branchB」に切り替えて「branchA」で行った作業(一時的に退避させている作業)を適用させましょう。
スタッシュは複数貯めておくことができます。
最新のスタッシュを適用させる場合は「隠した変更を戻す」を選択します。
ここでは「スタッシュ一覧」を選択してみましょう。
ここでは2つのスタッシュがあります。
「メッセージ」や「日時」である程度判断できますが、「作業ツリーと比較」などを見れば変更点が確認できます。
戻したいスタッシュの上で右クリック「隠した変更を再現」を選択します。
一時的に退避させた変更が適用されました。
まとめ
ブランチを切り替えるのを忘れたまま作業を始めて、作業完了してコミットする時になって初めて気が付くことや、まだコミットできない状態の時に他のブランチで作業をしなければならないことはよく起こると思います。
変更したファイルを別の場所に移動させて後から上書きすれば解決する程度の変更なら大した作業ではないかもしれませんが、別のブランチで同じ個所を修正していた場合などは、コードを確認しながら整合性を取らなければならないこともあります。
スタッシュを使えば敗北感に打ちひしがれながら変更を取り消したり、開き直ってユンケル皇帝を買いに行く必要もありません。
そうスタッシュならね。