私的にGitでよくお世話になる機能がstash
です。
変更内容を一時保存できるので、急に別ブランチで作業をすることになった場合などに役立っています。
そんなstash
ですが、普段からコマンドを使っていないといざというときに忘れてしまうんですよね・・。
コマンドを覚えていると作業がスムーズなので、改めて方法を確認しました。
せっかくなので、記事にして備忘録にしようと思います。
参考にさせていただいたのは以下のサイトです。
プロジェクト管理ツールのBacklogが有名ですね。
参考:サル先生のGit入門 | 逆引きGit > Stash
そんなわけで、今回はGitコマンドでstash
を操作する方法(stash
する、復元する、削除する)についてご紹介しますね。
Gitコマンドでstashする方法
まずは一番の基本であるstash
する方法です。
作業コピー上にコミット前の変更がある状態で、以下のコマンドを実行します。
$ git stash save
最後のsave
は省略できますので、以下でも同様にstash
可能です。
$ git stash
さて、これでstash
できましたが、後から見直した際に何の変更だったのかが分かった方が便利ですよね。
そんなときにはstash
ごとにメッセージを付与すれば良いでしょう。
$ git stash save "メッセージ"
save
の後ろにメッセージを渡してあげることで、stash
内容が分かりやすくなります。
それでは一覧を見てみましょう。
一覧を見る場合はlist
でOKです。
$ git stash list
stash@{0}: On master: "メッセージ"
stash@{1}: WIP on master: 4547abc {この時の最新コミットメッセージ}
最新のstash
ほど、数字が小さくなります。
今回は1回目がメッセージなしでのstash
、2回目がメッセージありのstash
でしたので、上のような表示になっています。
メッセージを付与した方が一目で内容が分かりますよね。
一方でメッセージなしの方は、その時作業していたブランチの最新コミットメッセージが表示されます。
どの時点のブランチで作業していたのかは分かりますが、どのような作業をしていたのかは分かりません。
この場合はstash
を適用して中身を確認しなければ分からないので、一手間増えてしまいます。
stash
が増えてくると探すのも一苦労なので、stash
する際はメッセージをつけるようにした方が良いでしょう。
Gitコマンドでstash内容を復元する方法
stash
内容を復元する場合は2種類の方法があります。
1つは最新のstash
を復元する場合、もう1つは最新よりも前のstash
を復元する場合です。
最新のstash
を復元する場合は以下のコマンドでOKです。
$ git stash pop
このようにすると最新のstash
が復元されます。
最新以外のstash
を復元する場合は以下のように引数を渡してあげます。
$ git stash pop stash@{1}
stash@{}
の{}
の中に入る数字はlist
で一覧を見た際に表示される数字と同じです。
例えば、 以下のような一覧があったとします。
$ git stash list
stash@{0}: On master: "スタイルを変更"
stash@{1}: On master: "初期化処理を修正"
stash@{2}: WIP on master: 4547edf {この時の最新コミットメッセージ}
ここで上から2番目にある"初期化処理を修正"
というstash
を復元する場合は、stash
の番号がstash@{1}
となっているので、以下のようにすればOKです。
$ git stash pop stash@{1}
Gitコマンドでstash内容を削除する場合
stash
は便利ですが、ほったらかしにしておくと使わなかった不要なstash
が残ってしまいます。
一覧を表示した際に不要なstash
ばかりが表示されると、目的のstash
を探すのも一苦労ですので、いらなくなったstash
は削除してしまいましょう。
stash
を削除する方法は、stash
を復元する方法とよく似ています。
最新のstash
を削除する方法は以下のコマンドとなります。
$ git stash drop
これで最新のstash
が削除されます。
最新以外のstash
を削除する場合は以下のように引数を渡してあげます。
$ git stash drop stash@{1}
stash@{}
の{}
の中に入る数字はlist
で一覧を見た際に表示される数字と同じです。
例で確認してみましょう。
まずは一覧を表示します。
$ git stash list
stash@{0}: On master: "コメントを修正"
stash@{1}: On master: "認証処理を仮実装"
stash@{2}: WIP on master: 4547edf {この時の最新コミットメッセージ}
今回はstash@{1}
の"認証処理を仮実装"
というstash
が不要となったと仮定して削除してみます。
$ git stash drop stash@{1}
Dropped stash@{1} (ハッシュ値)
それではもう一度stash
の一覧を見てみましょう。
$ git stash list
stash@{0}: On master: "コメントを修正"
stash@{1}: WIP on master: 4547edf {この時の最新コミットメッセージ}
先ほど表示されたstash@{1}
は"認証処理を仮実装"
という内容でしたが、今は無くなっています。
代わりに、先ほどのstash@{2}
がstash@{1}
になっていますね。
これはstash@{1}
が削除された結果、もともとのstash@{2}
が繰り上がった結果です。
このようにして不要なstash
はどんどん削除していくのが良いと思います。
終わりに
今回はGitコマンドでstash
を操作する方法(stash
する、復元する、削除する)についてご紹介しました。
内容をまとめると以下のようになります。
stash
する ==>git stash save "メッセージ"
stash
の一覧を見る ==>git stash list
stash
を復元する ==>git stash pop stash@{1}
stash
を削除する ==>git stash drop stash@{1}
Gitについて不安があるという方は、一度入門向けのGit本を読んでみるのも良いでしょう。
以下の記事でおすすめ本を紹介しています。
どんなコマンドがあるのかを把握するだけで、今後の検索効率がグッと向上しますよ。
Gitのコマンドだけ把握したいんだ!という方には、こちらの書籍がおすすめです。
辞書的に使えるので、デスクの片隅に置いておくと便利だと思います。
今回はここまでです。それでは。