mzgkworks

iOSを中心にプログラミング関係について書く

【Git】git stashで未コミットの変更を一時保存する

コミットしていない変更を一時的に保存し、ブランチをクリーンな状態にすることができる。
なので、作業途中で無理にコミットしないでもブランチを切り替える(checkout)することができる。
便利。

stashする

# メッセージなし
$ git stash

# メッセージあり
$ git stash save "stashメッセージ"

stashのリストを表示させる

$ git stash list
stash@{0}: On v2_brnach: add stash # stashしたブランチ名: メッセージ

stashの内容を表示する

$ git stash show -p # 最新のstashの内容
$ git stash show -p stash@{n} # n番目のstashの内容

stashした変更を適用する

# 適用したstashは削除される
$ git stash pop # 最新のstashを適用
$ git stash pop stash@{n} # n番目のstashを適用

注意点

stashを作成したブランチ以外でも実行ができる。
その場合、コンフリクトが発生する。
コンフリクトを解決する方法としては、以下が利用できる。
1. 手動マージ
2. git checkoutを利用

# stashを適用しない
$ git checkout --ours .
$ git add . # addしてコンフリクトを解決(特に変更はされない)

# stashを適用
$ git checkout --theirs . # 後はaddしてcommit

どちらの場合も、ブランチが違うとstashが削除されることはない。

適用したstashを残す

$ git stash apply pop # 最新のstashを適用
$ git stash apply pop stash@{n} # n番目のstashを適用

stashを削除する

$ git stash drop # 最新のstashを削除
$ git stash drop stash@{n} # n番目のstashを削除

詳しくは

11−03 P187を参照。

アリスとボブのGit入門レッスン

アリスとボブのGit入門レッスン

アリスとボブのGit入門レッスン

アリスとボブのGit入門レッスン