Git Stash
最終更新
git stash はコミットしていない変更を退避し、作業ツリーをクリーンな状態に戻します。これにより、中途半端な作業をコミットせずにブランチを切り替えたり pull したりできます。変更はスタックに積まれ、後で git stash pop(適用して削除)または git stash apply(適用して保持)で再適用できます。
これらをターミナルプレイグラウンドで試してみましょう - ブラウザ内の本物のシェルで、インストールは不要です。
構文
| Command | What 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
| Behavior | git stash pop | git 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 は追跡されている(変更された)ファイルのみを退避します。追跡されていないファイルを含めるには -u(git stash -u)を、無視されているファイルも含めるには -a を追加します。これらのフラグがないと、git add していない新しいファイルは作業ツリーに残ります。特定の stash を適用するにはどうすればよいですか?
git stash list を実行すると stash@{0}、stash@{1} のように番号付きで表示されるので、git stash apply stash@{1}(または pop)で特定のものを再適用します。各 stash は作成時のブランチとメッセージも表示するため、区別できます。これをオンラインで練習できますか?
はい。ターミナルプレイグラウンドを開いて、ブラウザ内の本物のシェルで
git stash を実行できます - インストールは不要です。Coddy の無料のインタラクティブな Git コースでも、進行中の作業を管理する方法を段階的に扱っています。