git stashがありがたい状況
自分がgit stashを利用するケースは以下の2つです(他にも利用シーンがあればぜひコメントで)
これらの状況では作業中の変更差分を一時的に退避させるgit stashコマンドが便利
①今作業中のブランチとは別のブランチで急ぎで対応すべき作業が発生した。だが、今の作業は中途半端で出来ればまだコミットしたくない
⇒ 作業中の変更差分をstashで退避させて、作業対応後に退避させていた変更差分を取り出す
②新しいブランチを切り忘れてコーディングを始めてしまった
⇒ 変更差分をstashで退避させて、ブランチを正しく切り直してから変更差分を取り出す
実行手順
以下のコマンドで差分を退避させる
git stash push -u
オプションの説明/saveは非推奨
-u (--include-untrackedの省略形)
新規に作成されてまだgitにtrackされていないファイルもstashする
オプションなしで実行するとtrackされているファイルのみstashされたりしてカオスになるのでとりあえずで付けておいて損はない(はず)
※git stash saveでも同様のことができますがこちらは非推奨コマンドになりました
まだsaveを使っている人はpushにアップデートしましょう
stashされた差分は以下のコマンドで確認できる
git stash list
出力例
stash@{0}: WIP on git-stash-tutorial: f86cd30 Merge pull request #4 from git_user/branchname
取り出すときは対応するstash番号(stash@{0}みたいなやつ)を指定して取り出す
git stash pop stash@{0}
git stash applyでも可
popもapplyもどちらも変更差分を取り出す時のコマンド
popは取り出すと同時にstashスタックから消える
applyは取り出した後もstashスタックに残ったままの状態になる
その他のコマンド
git stash clear
stashスタックを全て消去
無用な混乱を産まないためにも不要なstashがない状態にしておくと良い