スタッシュはいつ使うの?
作業が途中でコミットしたくないけど、別のブランチに移って作業したい...そんなときに、ワークツリーの内容を一時的に保存しておくのがスタッシュ
使い方
# 作業を一時保存する
$ git stash
注意として、新規ファイルを作成してまだステージしていない場合は、そのファイルはGitの管理下にないので、一時保存されない。ステージしてからスタッシュするようにしよう。
# 一時保存した作業一覧を確認する
$ git stash list
# 最新の作業を復元する
$ git stash apply
# ステージの状況も含めて、最新の作業を復元する
$ git stash apply --index
# 特定の作業を復元する
$ git stash apply <スタッシュ名>
スタッシュ名はstash@{1}
などの文字列である。
# 最新の作業を削除する
$ git stash drop
# 特定の作業を削除する
$ git stash drop <スタッシュ名>
# 全作業を削除する
$ git stash clear
試してみよう
$ git checkout master
# ブランチを切っておく
$ git branch hotfix
# ファイルに変更を加える
$ echo hoge > hoge.txt
$ git add hoge.txt
# ファイルをスタッシュする
$ git stash
Saved working directory and index state WIP on master: 6f77a05 create hoge.txt
# 一覧を確認する
$ git stash list
stash@{0}: WIP on master: 6f77a05 create hoge.txt
# ブランチを切り替えて戻ってくる
$ git checkout hotfix
Switched to branch 'hotfix'
$ git checkout master
Switched to branch 'master'
ここでls
コマンドを実行して、hoge.txt
がないことを確認しておこう。
続き
$ git stash apply
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: hoge.txt
再度ls
コマンドを実行して、hoge.txt
が復元されたことを確認しよう。
ここまできたら、保存した作業はいらないので削除しておこう。
$ git stash clear
# 作業一覧を確認(何も表示されなければ成功)
$ git stash list