変更をスタッシュする
別のブランチに切り替えたいが、まだコミットする準備ができていない変更がある場合は、git stashを使用します。
スタッシュエントリを作成する
デフォルトでは、git stashはワーキングディレクトリの追跡された変更と、ステージングに追加された変更を保存します。オプションを使用して、どの変更を含めるかを制御できます。
追跡対象の変更をスタッシュするには:
git stashメッセージ付きで変更をスタッシュするには:
git stash push -m "describe your changes here"変更をスタッシュするが、ステージングに追加された変更は作業ディレクトリに残すには:
git stash push -k-k(--keep-index) オプションは、変更をstashしますが、ワーキングディレクトリにもそれらを保持します。このオプションは、変更を一時的に保存したいが、引き続き作業を続けたい場合に使用します。変更をスタッシュし、追跡対象外のファイルを含めるには:
git stash push -u-u(--include-untracked) オプションは、Gitがまだ追跡していないファイルもstashします。このオプションがない場合、コミットされていない新しいファイルは作業ディレクトリに残ります。ステージングに追加された変更のみをスタッシュするには:
git stash push -S-S(--staged) オプションは、ステージングされている変更のみをstashします。ステージングに追加された変更を保存し、ステージングされていない変更への作業を続けたい場合、このオプションを使用します。
スタッシュエントリを適用する
作業をスタッシュした後に多くの変更を加えると、スタッシュを適用する際に競合が発生する可能性があります。変更を適用する前に、これらの競合を解決する必要があります。
最新のスタッシュエントリを適用し、スタッシュに残すには:
git stash apply特定のスタッシュエントリを適用するには:
git stash apply stash@{3}最新のスタッシュエントリを適用し、スタッシュから削除するには:
git stash pop
スタッシュエントリを表示する
すべてのスタッシュエントリを表示するには:
git stash list詳細を含むスタッシュエントリを表示するには:
git stash list --stat
スタッシュエントリを削除する
最新のスタッシュエントリを削除するには:
git stash drop特定のスタッシュエントリを削除するには:
git stash drop <name>すべてのスタッシュエントリを削除するには:
git stash clear
例: スタッシュエントリの作成と適用
Gitスタッシュの使用を試すには:
Gitリポジトリ内のファイルを変更します。
変更をスタッシュします:
git stash push -m "Saving changes from edit"スタッシュリストを表示します:
git stash list保留中の変更がないことを確認します:
git statusスタッシュされた変更を適用し、スタッシュからエントリを削除します:
git stash popエントリが削除されたことを確認するために、スタッシュリストを表示します:
git stash list