本記事の概要
Hugo+Blowfishテーマで個人サイトを作っていた際にgit stashコマンドが便利だったので使い方などを残しておきます。
前提
Hugo+Blowfishテーマ適用済みの環境です。
なお、Windowsでの操作を想定しています。
(本記事が属するアドベントカレンダーについてもご確認ください)
こんなことありませんか?
ブランチデプロイ機能を使うために開発用ブランチへ変更を入れたかったのだけど、
ブランチをチェックアウトする前にファイルを更新してしまうことありませんか?
「一度ファイルを退避させて、ブランチに切り替えてまた手動でマージする」というのは面倒ですよね。
この場合、git stashコマンドが使えます。
git stashコマンドを使うことで、変更を一時的に退避して、その後に開発用ブランチに切り替えてからマージすることが出来ます。
変更の退避方法
「変更してあるがコミットしていない状態」だとします。
以下のようにgit stashコマンドを打ってみましょう。
git stash -u
上記コマンドを打つと、コミット前の変更が取り消され、git内の退避領域に変更が退避されます。
退避した変更の確認方法
下記のように git stash listコマンドで確認できます。
git stash list
退避すると、下記のように表示されます。
※コミットIDとメッセージは加工しています。実際に打つと、対応するベースのコミットIDとメッセージになります。
git stash list
stash@{0}: WIP on master: (コミットID) (コミットメッセージ)
注意点:ブランチの確認
退避した変更を反映する前に、必ず現在のブランチを確認しましょう。
下記のように、git branchコマンドで現在のブランチを確認できます。
git branch
さて、git stashコマンドによって変更を退避しているため、現在チェックアウトしているブランチには一切変更を加えていない状態になっています。
なので、安心して変更を加えたいブランチをチェックアウトできます。
git checkoutコマンドで正しいブランチをチェックアウトしましょう。
(不安であればチェックアウト後にもう一度確認するのもありです)
git checkout (ブランチ名)
退避した変更の反映
下記のようにしてgit stash popコマンドで反映できます。
git stash pop
複数の変更を退避している場合は、最新の変更が取り出されます。
popで退避した変更が消えていることの確認
popすることで退避した変更は削除されます。
もう一度、git stash listコマンドで確認してみましょう。
何も出力されていなければ、退避した領域に登録されていないことになります。
※下記の例では作業用ディレクトリのパスを加工しています。
PS (作業用ディレクトリ)> git stash list
PS (作業用ディレクトリ)>
もう一つ大事なこと
正しいブランチに変更を反映した後は、commitやpushを適宜行うようにしましょう。
まとめ
git stashコマンドを利用することで、変更を一時的に退避して反映させることが出来ます。
そもそもの話として、今自分が作業しているブランチを確認することが重要です。
もし、誤って違うブランチで作業していたことに気付いた際は、git stashコマンドで出来るだけ早く退避させるようにしましょう。
そうすることで手戻りを最小化できます。