[git]stashコマンドで修正コードの一時退避

タグ: | 投稿日: 投稿者:

こんにちは、kikuです。

ソースコード管理に【git】を使ってますか?この記事を見てるということは使っているはずですね。
先日使ってみて便利だと思ったコマンドを紹介します。

ちょっとした作業している最中に、別ブランチでのちょっとした対応が割り込んできたり、、、ということはよくあることです。
作業中のコードがとても中途半端だったり、commitするまでも無いような状態だったりした時はすごい面倒くさくて困っちゃいますね。

そんな時はこれ!【git stash】です。

一時的に修正していた内容を退避することができます。
コマンドを叩くと、コードはHEADと同じ状態になります。
つまりHEADとの差分がなくなるということです。
その差分は【stash】に保存してくれますので安心してください。

HEADとの差分がなければ何も問題なくcheckoutできるので安心してできます。
そして退避したコードを復元させるには

【git stash pop】を使います。

pullした状態のコードに先ほど退避した差分コードを差し込みます。
これでまた作業再開できますね。

いろいろ便利なオプションがあるので少し紹介します。

まず基本的な退避(saveは省略可)

$ git stash save

stashにメッセージを付けたければ

$ git stash save "message"

退避リストを表示(stashは複数退避しておくことが可能です)

$ git stash list

listの表示例(stash@{0}はメッセージ有りで退避、stash@{1}はメッセージ無しで退避)

stash@{0}: On master: stash_test
stash@{1}: WIP on master: 8e4db62 Merge remote-tracking branch 'origin/master'

退避から戻してstashから消す

$ git stash pop

退避が複数あった場合は指定する。こちらも戻したstashは消える。

$ git stash pop stash@{1}

applyを使えばstashから消えない

$ git stash apply
$ git stash apply stash@{1}

stashから消す

$ git stash drop
$ git stash drop stash@{1}

stashからすべて消す

$ git stash clear

今回は非常にシンプルなオプションのみの紹介です。
他にもたくさんのオプションや、他のコマンドとの合わせ技などがありますが書ききれないので省略します。
是非チャンスがあれば活用してください。

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>