🥢

git stashとは

2023/12/06に公開

1. stashとは

変更差分をコミットせずに一時的に退避させることで保存できる機能です。
作業中のブランチから別のブランチに移動したいときなどに利用されます。

2. 変更差分の退避方法

git stashコマンドを実行すると現在のブランチにある変更差分を退避できます。

git
git stash

また、退避したものは、git stashコマンドにlistオプションを付けることで確認できます

git
git stash list

3. 退避した変更差分を戻す

git stashで退避したものは戻すこともできます。
戻すときにはgit stashコマンドにapplyオプションを付けると戻ります。このコマンドを実行した後にgit statusコマンドを実行すると、退避した変更差分が戻っていることが確認できます。

git
git stash apply

4. 注意点

untracked file(新規作成したファイル)は退避できません。退避させるには-uオプションを付ける必要があります。

5. オプション一覧

  • git stash -u
    • ntracked fileも含めて変更差分を退避
  • git stash save コメント
    • 退避時にコメントを付けられます
    • git stash listで退避のリストを見るときに便利です
  • git stash list
    • 退避させた変更の一覧表示できます
  • git stash list -p
    • 退避させた変更の一覧に、差分を確認できます
  • git stash apply
    • 退避させた変更を戻します
    • 複数退避がある場合は、最新のものに戻します
    • 最新のものより前の変更を戻す場合はgit stash apply 2のような形で退避リストの何番目かを指定します
    • 何番目かはgit stash listで確認できます
    • 戻した内容は退避リストに残ったままです
  • git stash pop
    • git stash applyの、戻すと同時に退避リストから削除するバージョンです
  • git stash drop
    • 退避リストから変更を削除します
    • git stash popと同じく、最新の変更が削除されます
    • 最新以前のものを削除する場合はgit stash drop 2ような形で退避リストの何番目かを指定します
  • git stash clear
    • 退避リストを全部削除します

参考サイト

git: git stashの使い方

Discussion