作業ツリーの内容を一時的に保存することができる git stash
コマンドについての備忘録。
環境
- git version 2.37.3
使い方
作業ツリーの状況。
$ git status On branch test1 Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: a.txt no changes added to commit (use "git add" and/or "git commit -a")
stash 領域に保存。-a
オプションで、untracked file
と .gitignore
で無視されているファイルも併せて保存されます。-m
オプションでメッセージを付与できます。
$ git stash -a -m "WIP on test1" Saved working directory and index state On test1: WIP on test1
保存されている stash 情報を確認。
$ git stash list stash@{0}: On test1: WIP on test1
stash 情報の中身を確認。
$ git stash show stash@{0} a.txt | 1 + 1 file changed, 1 insertion(+)
git stash apply
コマンドで、現在のブランチの作業ツリーに保存された stash 情報を戻せます。戻せるブランチは、stash の保存をしたブランチに限らず、異なるブランチへも戻すことができます。
$ git stash apply stash@{0} On branch test1 Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: a.txt no changes added to commit (use "git add" and/or "git commit -a")
stash 情報は残ったままとなる。
$ git stash list stash@{0}: On test1: WIP on test1
stash 情報を削除。
$ git stash drop stash@{0} Dropped stash@{0} (47b7f2dfb27cb332737f3e14aee5e36182308a56)
削除されました。
$ git stash list
なお、stash 情報を戻す際、git stash apply
ではなく git stash pop
コマンドを利用すると、元に戻す際に一緒に stash 情報の削除もしてくれます。