作業を一時退避する - git stash
作業中の変更を一時的に退避(スタッシュ)します。
概念図
構文
bash
git stash [push|pop|list|drop]使用例
変更を退避
bash
git stash退避した変更を復元
bash
git stash pop迷ったら `-u` を付ける
実務では git stash -u を使うことが多いです。
-u を付けないと新規作成したファイル(未追跡ファイル)が退避されず、ブランチ切り替え時に残ってしまいます。
git stash(デフォルト)追跡済みファイルの変更だけを退避します。新規作成ファイルは対象外です。
git stash -u追跡済みの変更 + 未追跡ファイルをまとめて退避します。ブランチ切り替え前に使うのはこちらが基本です。
git stash -a.gitignoreで無視されているファイルまで含めて退避します。通常は不要ですが、ビルド成果物ごと退避したい特殊な状況で使います。
注意点
コンフリクト発生時
popは自動で消えないgit stash popはコンフリクトが発生した場合、退避した変更が一覧から自動的に削除されません(applyと同じ動作になります)。コンフリクトを解決した後、手動でgit stash dropする必要があります。git stash clearは取り消せないすべてのスタッシュが消えるため、実行前に本当に不要か確認しましょう。
長期間スタッシュに置き続けない
長期間スタッシュに変更を残しておくと内容を忘れてしまうため、早めにコミットするかブランチにすることをおすすめします。スタッシュの命名・部分適用・ブランチ化などの運用テクニックは、ガイド スタッシュを使いこなす を参照してください。
Git Ready