【Git】git stashで追加したファイルも一時退避できる?初心者向けに徹底解説!
投稿日: 2025年05月27日
Gitを使って開発していると、**「ちょっと別の作業をしたいけど、今の作業内容を一旦どこかに退避しておきたい」**という状況になることがあります。
そんなときに便利なのが、**git stash
(スタッシュ)**です。
stash
は、現在作業中の変更内容を 「一時的に避難させておけるコマンド」です。避難させた作業は後から簡単に元に戻すことができるので、非常に便利です。
git stash
を使うことは、机の上の書類を一時的に引き出しにしまって、別の作業をするようなものです。終わったらまた引き出しから取り出して元に戻せます。
この記事では、以下のような疑問に答えていきます:
git stash
ってどう使うの?
git stash save
って何?
git add
したけどまだコミットしてないファイルもstashできる?
未追跡のファイル(新規作成ファイル)はstashできる?
初心者の方にもわかりやすく、実際のコマンド例を交えて解説していきます。
git stash
の基本的な使い方作業中の変更を一時退避するには、以下のコマンドを実行します。
git stash
これだけで、インデックス(git add
)済みのファイルや、編集したファイルの変更点が一時的に保存され、作業ディレクトリがクリーンな状態になります。
git stash save
とは?実は以前は git stash save
という書き方がよく使われていました。
git stash save "作業内容のメモ"
このコマンドは、stashに「メッセージ(説明)」を付けて保存するための方法です。
git stash save
は非推奨に現在のGitでは、git stash save
は非推奨とされており、代わりに以下のように push
を使うことが推奨されています:
git stash push -m "作業内容のメモ"
このようにすることで、メッセージ付きでstashに保存できます。
git add
済みのファイルはstashできる?答えは Yes(できます)!
git add newfile.txt
git stash
このように git add
済みのファイルは、通常の git stash
で退避されます。
git add
していない未追跡ファイルは?デフォルトの git stash
では、**未追跡ファイル(Untracked files)**は対象外です。
touch untracked.txt
git stash # → untracked.txt はstashされない!
オプション -u
(または --include-untracked
)を付けましょう。
git stash -u
🧹 .gitignore
されたファイルまでstashしたい場合は?
git stash -a # --all の略
このコマンドは、.gitignore
されたファイルもstash対象に含めます。使用には注意が必要です。
)
# 通常のstash
git stash
# メッセージ付きでstash(推奨)
git stash push -m "ちょっと作業を中断するため保存"
# addしてないファイルも含める
git stash -u
# .gitignoreファイルまで含める
git stash -a
📝 まとめ
git stash
は、ちょっとした切り替え作業や、ブランチを切り替える前に作業内容を避難させたいときに非常に便利なコマンドです。特に push -m
を使ったメッセージ付き保存は、後から何の作業をstashしたのかがわかりやすくなるのでおすすめです。