git stashの使い方

gitで管理している作業を並行して進める事が多くなってきたのでgit stash の使い方をまとめておきます。

git stashとは?

stashを使用すると、コミットしていない変更を退避することができます。 stashで現在の変更を退避して、今すぐやりたい作業をして、退避させていた変更を戻して作業を再開することができます。

【git stash】コミットはせずに変更を退避したいとき - Qiita

ざっくりですがstash コマンドは次の2つができます。 コミット前の段階でブランチを切替えたい時などに便利です。

  • ファイルの変更を一時的に退避する
  • 一時的に退避させた変更を復元する

git stashの使い方

stash で良く使うコマンドです。

  • git stash: インデックスに追加(git add 済み)されたファイルの変更を退避
  • git stash -u: 未追跡のファイル(git add されていない)、無視されたファイルも含めて変更を退避
  • git stash list: 退避させた変更のリストを表示
  • git stash apply stash@{}: 退避した変更を現在のブランチに復元
  • git stash drop stash@{}: 退避させたリストを削除
  • git stash pop stash@{}: 退避から変更を復元、退避リストを削除

git stashの使用例

作業途中で別ブランチに切り替えて作業後、元のブランチに戻って作業を再開したい。

この場合の作業の流れは次のようになります。

  1. 変更を退避
  2. 別ブランチに切替え
  3. 別ブランチで作業
  4. 元ブランチに切替え
  5. 退避した変更リストを確認
  6. 退避した変更リストを元ブランチに復元
  7. 元ブランチでの作業再開
  8. 復元した変更リストを削除

上記作業を行う際のコマンドの流れは下記のようになります。

$ git stash # 変更を退避
$ git switch 別ブランチ名 # 別ブランチに切替え

# 別ブランチでの作業

$ git switch 元ブランチ名 # 元ブランチに切替え
$ git stash list # 退避した変更リストを確認
$ git stash apply stash@{} # 退避した変更リストを元ブランチに復元

# 元ブランチで作業を再開

$ git stash drop stash@{} # 復元した変更リストを削除

上記の流れで複数のブランチを切替えての作業ができるようになります。

まとめ

今後、使う頻度はどんどん上がっていくと思うのでstashの使い方に早めに慣れていきたい。

参照

【git stash】コミットはせずに変更を退避したいとき - Qiita

Git - git-stash Documentation