Stash(スタッシュ)とは?Git初心者向けに一時保存の使い方や活用方法をわかりやすく解説
Stash(スタッシュ)とは、コミットしていない変更内容を一時的に退避(保存)できるGitの機能です。
作業中に「急いで別のブランチへ切り替えたい」「他の不具合を先に修正しなければならない」という場面で役立ちます。
この記事では、Stashの役割や使い方、実際の業務での利用例、初心者が注意すべきポイントをわかりやすく解説します。
Stashとは?
Stash(スタッシュ)は、日本語では「隠しておく」「一時保管する」という意味があります。
Gitでは、コミットしていない変更内容を一時的に保存し、作業ディレクトリを元の状態へ戻す機能を指します。
Stashした変更は後から復元できるため、作業途中でも安心して別の作業へ切り替えられます。
| 項目 | 内容 |
|---|---|
| 正式名称 | Stash |
| 日本語の意味 | 一時保管・退避 |
| 目的 | 未コミットの変更を一時保存する |
| 利用場面 | ブランチ切り替え、緊急対応、作業の中断 |
Stashはなぜ必要なのか
Gitでは、未コミットの変更がある状態ではブランチを切り替えられないことがあります。
例えば、機能開発中に緊急の障害対応が発生した場合、そのままでは別ブランチへ移動できません。
そのようなときにStashを利用すると、現在の作業内容を一時保存してから別の作業へ移れるため、開発を中断しても変更内容を失わずに済みます。
Stashの流れ
- 作業中の変更をStashへ保存する
- 作業ディレクトリが元の状態へ戻る
- 別のブランチへ切り替える
- 必要な作業を行う
- 元のブランチへ戻る
- Stashした内容を復元する
StashとCommitの違い
| Stash | Commit |
|---|---|
| 一時保存する | 履歴として保存する |
| 通常は他のメンバーと共有しない | Pushすると共有できる |
| 作業途中の退避に利用する | 作業の区切りで利用する |
初心者は、Commitは正式な保存、Stashは一時的な退避と考えると理解しやすくなります。
IT現場での利用例
緊急障害対応
開発中に障害対応が発生した場合、現在の作業をStashしてから修正作業へ移ります。
レビュー対応
レビューで指摘された修正を優先するため、一時的に現在の作業を退避します。
ブランチの切り替え
未コミットの変更を保存してから別のブランチへ切り替えます。
社内SEの運用作業
PowerShellスクリプトの作成中に別案件の対応が必要になった場合にも活用できます。
GUIでStashする方法
GitHub DesktopやSourceTreeなどのGitクライアントでは、「Stash Changes」などのメニューから実行できます。
- リポジトリを開く
- 変更内容を確認する
- 「Stash」を選択する
- 必要に応じてコメントを入力する
- 一時保存を実行する
CUI(コマンド)でStashする方法
変更内容を一時保存する
git stash
コメント付きで保存する
git stash push -m “ログイン画面修正中”
保存した一覧を確認する
git stash list
最新のStashを復元する
git stash pop
Stashを残したまま復元する
git stash apply
不要なStashを削除する
git stash drop
確認結果の見方
| 表示内容 | 意味 |
|---|---|
| Saved working directory | 一時保存が完了した |
| stash@{0} | 最新のStash |
| Applied stash | 復元が完了した |
業務でよくあるトラブル
| トラブル | 原因 |
|---|---|
| 復元時にコンフリクトが発生した | 保存後に同じファイルが変更された |
| Stashが見つからない | 削除済み、または別リポジトリで操作した |
| 変更が戻らない | 誤ってdropを実行した |
| 複数のStashを区別できない | コメントを付けずに保存した |
原因の切り分け
Stashで問題が発生した場合は、次の順番で確認しましょう。
- git stash listで保存一覧を確認する
- 現在のブランチを確認する
- git statusで作業状態を確認する
- コンフリクトが発生していないか確認する
- 必要なStashを選択して復元する
影響範囲を確認する
- 現在のローカルリポジトリ
- 未コミットの変更
- 現在のブランチ
Stashはローカル環境だけで利用される機能です。リモートリポジトリや共同開発メンバーには影響しません。
初心者がやりがちなミス
- CommitとStashを混同する
- Stashしたことを忘れる
- コメントを付けずに複数保存する
- 復元前に削除してしまう
- Stashだけでバックアップしたつもりになる
業務で上司へ報告するポイント
- 現在の作業をStashした理由
- 対象ブランチ
- 現在対応している作業
- 影響範囲
- 復元予定
例:「機能開発中でしたが、緊急障害対応のため変更内容をStashへ退避しました。対応完了後に元のブランチへ戻り、作業を再開する予定です。」
エスカレーションするタイミング
- Stashの復元でコンフリクトを解決できない
- 誤って重要なStashを削除した
- どのStashを復元すべきか判断できない
- 作業内容が不明になった
- 影響範囲を判断できない
実務で役立つポイント
現場では、短時間だけ作業を中断する場合はStash、作業の区切りが付いている場合はCommitという使い分けが一般的です。
また、複数のStashを保存する場合は、コメントを付けて管理すると後から内容を判断しやすくなります。長期間Stashを残し続けると管理が難しくなるため、不要になったものは削除し、必要な変更は早めにコミットすることをおすすめします。
関連するIT用語
- Git
- コミット(Commit)
- ブランチ(Branch)
- チェックアウト(Checkout)
- スイッチ(Switch)
- プル(Pull)
- プッシュ(Push)
- マージ(Merge)
- リポジトリ(Repository)
- コンフリクト(Conflict)
よくある質問(FAQ)
StashするとGitHubへ保存されますか?
いいえ。Stashはローカル環境だけで保存されるため、GitHubなどのリモートリポジトリには反映されません。
StashとCommitはどちらを使えばよいですか?
一時的に作業を退避したい場合はStash、作業の区切りとして履歴を残したい場合はCommitを利用します。
Stashは複数保存できますか?
はい。複数のStashを保存でき、それぞれ一覧から選択して復元できます。
Stashを復元すると削除されますか?
git stash popは復元後にStashを削除します。一方、git stash applyは復元してもStashを残すため、必要に応じて使い分けましょう。
まとめ
Stashは、コミットしていない変更を一時的に退避し、あとで元の状態へ戻せる便利なGit機能です。
初心者は、「Commitは正式な保存」「Stashは一時保存」「Pushは共有」という役割の違いを理解することが重要です。緊急対応やブランチの切り替えが必要になったときにStashを活用することで、作業内容を失うことなく安全に開発を進められるようになります。
