Githubを使用していてgit stashコマンドをよく使う中で覚えたはずのコマンドが毎回忘却の彼方へと消えていきます。
毎回ググるよりここに備忘録として残しておこうと思い記載しました。
Git Stashとは
「作業ブランチで作業中だけど他のブランチに移って何かしたい」この場合にコミットして避けるのではなく、亜空間において一時退避させる認識です。
.gitの公式では、下記のような記載がありました。
git-stash – Stash the changes in a dirty working directory away
変更をダーティな作業ディレクトリに隠します
使うシーン
私がよく使うシーンは、下記の場合です。
- 作業ブランチで作業中にプルリクエストした別の自分のブランチのレビューが来た場合(ブランチを切り替えてレビュー内容を修正したい時)
- 他にもいつくかシーンがありますが、基本的には、作業中に他のブランチに移りたい、でもコミットしたくない時
使い方
退避
git stash -u
何かのブランチで作業しコミットしていない変更がある状態で上記のコマンドを実行すると、変更した部分を退避できます。
作業中のブランチとしては、変更が消えて差分がなくなった状態にになります。
これでcheckout しても無問題になります。
stashリスト確認
git stash list
stash@{0}: hogehoge
stash@{1}: hogehoge
git stash -uで避けたもののリストが一覧で表示されます。
{0}が一番最初に行ったstashです
元に戻す
git stash apply stash@{0}
これで現在いるブランチに亜空間に退避した変更を元に戻すことができます。
@{0}とすることでどのstashを指定します。
stash@{0} のstash名は省略することもできます。省略した場合は、直近にstashした情報が戻されます。
削除
git stash drop stash@{0}
意外と忘れがちなのですが、 applyコマンドで復帰させた後削除しないと亜空間に残ったままになります。
消しても問題ない場合は、applyで戻した後なりに上記の削除コマンドを実行します。
popコマンド
git stash pop stash@{0}
Applyコマンドとdropコマンドは別々で元に戻して削除するものですが、それを一括で同時にできるコマンドがpopコマンドです。
最後に
簡単ですが、備忘録として最低限のstashコマンドを記載しました。
これで忘却の彼方から救えるかもです…
ではまた。
コメント