Menu
Coddy logo textTech

Git Stash

最終更新

git stash はコミットしていない変更を退避し、作業ツリーをクリーンな状態に戻します。これにより、中途半端な作業をコミットせずにブランチを切り替えたり pull したりできます。変更はスタックに積まれ、後で git stash pop(適用して削除)または git stash apply(適用して保持)で再適用できます。

これらをターミナルプレイグラウンドで試してみましょう - ブラウザ内の本物のシェルで、インストールは不要です。

構文

CommandWhat it does
git stash追跡されている変更を退避し、作業ツリーをクリーンにする
git stash -u追跡されていないファイルも退避する
git stash push -m "msg"説明的なメッセージを付けて退避する
git stash push <file>特定のファイルだけを退避する
git stash listすべての stash を一覧表示する
git stash pop最新の stash を再適用して削除する
git stash apply最新の stash を再適用し、保持する
git stash drop最新の stash を削除する
git stash clearすべての stash を削除する

pop vs apply

Behaviorgit stash popgit stash apply
変更を再適用するはいはい
後で stash を削除するはいいいえ
stash を再利用するのに適しているいいえはい

Git stash のよくある質問

git stash は何をしますか?
コミットしていない変更をスタックに保存し、作業ツリーを最後のコミットにリセットして、クリーンな状態を提供します。変更は失われません - 退避されており、後で git stash pop または git stash apply で再適用できます。コミットする準備はできていないがブランチを切り替える必要があるときに便利です。
git stash pop と git stash apply の違いは何ですか?
どちらも最新の stash を作業ツリーに再適用します。git stash pop はその後 stash をスタックから削除しますが、git stash apply はスタックに残すため、別の場所で再度適用できます。一度きりの復元には pop を、stash を再利用したい場合は apply を使いましょう。
git stash は追跡されていないファイルを含みますか?
デフォルトでは含みません - 素の git stash は追跡されている(変更された)ファイルのみを退避します。追跡されていないファイルを含めるには -ugit stash -u)を、無視されているファイルも含めるには -a を追加します。これらのフラグがないと、git add していない新しいファイルは作業ツリーに残ります。
特定の stash を適用するにはどうすればよいですか?
git stash list を実行すると stash@{0}stash@{1} のように番号付きで表示されるので、git stash apply stash@{1}(または pop)で特定のものを再適用します。各 stash は作成時のブランチとメッセージも表示するため、区別できます。
これをオンラインで練習できますか?
はい。ターミナルプレイグラウンドを開いて、ブラウザ内の本物のシェルで git stash を実行できます - インストールは不要です。Coddy の無料のインタラクティブな Git コースでも、進行中の作業を管理する方法を段階的に扱っています。
Coddy programming languages illustration

Coddy で Git を学ぼう

始める