メインコンテンツへスキップ

Git stashとは?使い方・戻し方・commitとの違いまで徹底解説

·956 文字·2 分

開発中に「作業途中だけど別ブランチに切り替えたい…」という場面はよくあります。

そんなときに便利なのが Git stash です。

この記事では、Git stashの基本から実務での使い方・比較・事故復旧までまとめて解説します。


Git stashとは
#

Git stashとは、現在の変更内容を一時的に退避できる機能です。

👉 コミットせずに作業状態を保存できる


図解:stashのワークフロー
#

Git stashのワークフロー。作業中の変更をstashで退避し、別ブランチに移動後、再度applyで復元する流れ
図:Git stashの基本ワークフロー

作業中(変更あり)
git stash
作業ディレクトリがクリーン
別ブランチへ移動
git stash apply
作業再開

基本の使い方
#

変更を退避
#

git stash

一覧確認
#

git stash list

復元
#

git stash apply

復元+削除
#

git stash pop

stash と commit の違い
#

ここがかなり重要です。

項目stashcommit
目的一時退避永続保存
履歴に残る
チーム共有
安全性低い高い

使い分け
#

👉 stashを使うべき場面

  • 作業途中で一時退避したい

👉 commitすべき場面

  • 後から見返す必要がある
  • チームで共有する

stash と git worktree の違い
#

git worktree と比較すると理解が深まります。

項目stashworktree
用途一時退避並行作業
作業状態消える維持される
安全性やや低い高い

worktreeの例
#

git worktree add ../hotfix main

👉 別ディレクトリで同時作業可能


どちらを使うべき?
#

👉 stash

  • 一瞬だけ退避したいとき

👉 worktree

  • 並行開発したいとき

特定のstashを扱う
#

git stash apply stash@{1}

名前を付ける
#

git stash push -m "ログイン修正途中"

ファイルの扱い
#

未追跡ファイル含む
#

git stash -u

無視ファイル含む
#

git stash -a

stashの削除
#

git stash drop stash@{0}
git stash clear

⚠️ 全削除は危険


よくあるミス
#

applyしても消えない
#

👉 applyは「復元のみ」


コンフリクト
#

👉 通常のマージと同じ


stash事故からの復旧(reflog)
#

ここはかなり重要です。


消してしまった場合
#

git reflog

stashの履歴を探す
#

stash@{0}: WIP on main...

復元
#

git stash apply <hash>

👉 完全復元できる可能性あり


実務での使いどころ
#

緊急対応
#

git stash
git checkout main

一時的な退避
#

👉 レビュー前など


stashを使う際の注意点
#

長期間放置しない
#

👉 忘れて事故る


stashはバックアップではない
#

👉 消える前提で使う


NGな使い方
#

git stash
# 放置

👉 これが一番危険


まとめ
#

Git stashは

👉 変更を一時的に退避する便利ツール


重要ポイント
#

  • stashは一時保存
  • commitは正式保存
  • worktreeは並行作業

👉 結論:stashは短時間の退避に限定して使うのがベスト

著者
ゆーふー
Web開発、インフラ、AI技術に興味があるエンジニアです。日々の学びを記録しています。

関連記事

👤 運営者プロフィール

運営者プロフィール画像

ゆーふー

メガベンチャーで働く現役Webエンジニア(歴約2年)。
フロントエンドからインフラ構築、セキュリティ対策まで、実務で得た「現場のリアルな技術知見」を発信しています。