Git stashコマンド完全ガイド|作業内容を一時保存してブランチ切り替えを安全に行う方法
開発をしていると、「作業途中だけど別のブランチへ移動しなければならない」「急なバグ修正が入った」という場面はよくあります。
私も旅行先でノートPCを開いて開発していると、予定外の修正依頼が飛び込んでくることが何度もありました。 せっかく集中して実装していたのに、そのままコミットするには中途半端…。そんなときに何度も助けられたのがGitの「git stash」コマンドです。
この記事では、Git初心者でも理解できるように、git stashの基本から実践的な使い方まで詳しく解説します。
git stashとは?
git stashは、コミットしていない変更内容を一時的に保存し、作業ディレクトリを最後にコミットした状態へ戻すGitコマンドです。
保存した内容はあとから好きなタイミングで復元できるため、現在の作業を中断して別の作業へ移る際に非常に便利です。
イメージすると次のような流れになります。
- 現在の変更内容を一時保存する
- 作業ディレクトリがクリーンな状態になる
- 別ブランチへ移動して作業する
- 元のブランチへ戻る
- 保存していた変更内容を復元する
コミット履歴を汚さずに作業を保留できるため、多くの開発現場で利用されています。
git stashが役立つ場面
急なブランチ切り替え
新機能を開発している最中に、「本番障害が発生したので今すぐ修正してください」と依頼されることがあります。
まだ完成していないコードをコミットしたくない場合でも、git stashを使えば現在の変更を安全に退避できます。
未完成の作業を一時保存したい
実装途中で終業時間になった場合や、別タスクを優先しなければならない場合にも便利です。
途中までのコードをコミットする必要がないため、Git履歴をきれいに保てます。
コンフリクトを回避したい
ブランチを切り替える前に変更内容をstashしておくことで、不要な競合を避けられるケースがあります。
作業内容を一時保存する
現在の変更内容を保存するには次のコマンドを実行します。
git stash
実行すると、コミットしていない変更が一時保存され、作業ディレクトリは最後にコミットした状態へ戻ります。
「あとで続きをやろう」という感覚で気軽に利用できます。
保存したスタッシュを確認する
保存されている一覧は次のコマンドで確認できます。
git stash list
実行例
stash@{0}: WIP on feature/login: 5f2b3a1 Add login page
stash@{1}: WIP on main: 2cd91ef Update README
一覧にはWIPという文字が表示されます。
WIPとはWork In Progressの略で、「作業途中」という意味です。
どのブランチで保存したのかも確認できるため、複数のスタッシュを管理する際にも役立ちます。
スタッシュを復元して削除する(git stash pop)
保存した内容を元に戻すには次のコマンドを使用します。
git stash pop
このコマンドは次の2つの処理を同時に行います。
- スタッシュ内容を復元する
- スタッシュ一覧から削除する
一度復元したらもう不要という場合はこちらを利用することが一般的です。
スタッシュを残したまま復元する(git stash apply)
スタッシュを削除せずに復元したい場合はこちらを使用します。
git stash apply
git stash popとの違いは、スタッシュ一覧から削除されないことです。
バックアップとして残しておきたい場合や、複数回試したい場合に便利です。
| コマンド | 復元 | 一覧から削除 |
|---|---|---|
| git stash pop | ○ | ○ |
| git stash apply | ○ | × |
git stashコマンドまとめ
最後に今回紹介したコマンドをまとめます。
| コマンド | 内容 |
|---|---|
git stash |
現在の変更内容を一時保存する |
git stash list |
保存されているスタッシュ一覧を表示する |
git stash pop |
スタッシュを復元して一覧から削除する |
git stash apply |
スタッシュを残したまま復元する |
まとめ
git stashは、Gitを使ううえで覚えておきたい非常に便利なコマンドです。
開発では予定どおりに作業が進むことは少なく、急な修正やレビュー対応、ブランチの切り替えが頻繁に発生します。
私自身も旅先のカフェやホテルで開発していると、「今すぐ別ブランチで確認してほしい」という依頼を受けることが何度もありました。そのたびにgit stashを使うことで、中途半端なコードをコミットすることなく、安心して別作業へ移ることができています。
Git初心者のうちはコミットとstashの使い分けに迷うかもしれませんが、「まだ履歴には残したくない作業」を一時的に保存するのがgit stashだと覚えておくと理解しやすくなります。
ぜひ実際にコマンドを動かしながら、作業内容の退避と復元を体験してみてください。日々の開発効率が大きく向上するはずです。







0 件のコメント:
コメントを投稿