git stashの使い方は?一時保存から復元まで基本操作を解説

[PR]

プログラミング基礎・開発運用

プロジェクト作成中に思わぬ用件が飛び込んできてコードが中途半端な状態のことはありませんか?そのようなときに重宝するのがgit stashです。この機能を使いこなせば、変更中のファイルを一時保存してクリーンな状態に戻し、後で安全に復元できます。基本操作だけでなく、最新のオプションやよくあるトラブルへの対処法も含めて解説します。
git stashをマスターして、柔軟で効率的なワークフローを手に入れましょう。

git stash 使い方 基本操作と概要

git stash 使い方の基本操作とは、作業中の変更を一時的に退避させ、ワーキングディレクトリをクリーンな状態に戻すことです。これにより、別のブランチに切り替える、緊急の修正を加える、あるいはpullやrebaseを行う際の競合を回避できます。stashはトラッキングされた変更だけでなく、オプションを使えば未追跡ファイルや無視ファイルも含めることが可能です。
この節では、stashを作成する方法や適用・復元の流れ、参照・管理の仕方について初心者にも理解できるように詳しく説明します。

stashの作成(変更の一時保存)

stashを作るには、まず変更をワーキングディレクトリで行った状態で「git stash push」または単に「git stash」と入力します。これにより、ステージされた変更とステージされていない変更が保存され、作業ディレクトリはHEADコミットと一致する状態に戻ります。オプションとして「-u」あるいは「–include-untracked」を使うと、新規の未追跡ファイルも含めて保存できます。更に「-a」または「–all」を使えば、ignore設定されたファイルまで全部保存対象にすることができます。

stashの一覧確認と差分表示

複数のstashを保存している場合、「git stash list」で保存されたstashの一覧を確認できます。それぞれに「stash@{n}: WIP on ブランチ名」という形式で識別名が付きます。さらに「git stash show」や「git stash show -p stash@{n}」を使って、どのファイルでどのような変更があったかの差分を見られます。これにより、復元前に内容を把握でき、不要なstashを誤って適用することを防げます。

stashの復元方法(applyとpopの違い)

stashの復元には大きく分けて二つの方法があります。一つは「git stash apply」で、保存した変更を再適用するものです。このコマンドはstashをそのまま保持するため、複数のブランチで同じ変更を使いたい場合に便利です。もう一つは「git stash pop」で、変更を適用しつつ該当するstashを削除します。使い終わったstashをきれいに片付けたいときに最適です。また、どちらもstashを指定して「stash@{n}」の形式で個別のstashを復元できます。

git stash 使い方 応用テクニックとオプション

git stash 使い方を基本操作だけで終わらせるのはもったいないです。ワークフローを改善し時間を節約するために、多くの開発者が活用しているオプションや応用テクニックがあります。ここでは、未追跡ファイルの扱い、部分stash(パッチモード)、stashから新しいブランチを作る方法など、より高度な使い方について説明します。最新情報にもとづき、今すぐ使えるTipsを紹介します。

未追跡ファイルや無視ファイルを含める方法

通常のstashでは追跡されていないファイルは保存対象外となりますが、「-u」または「–include-untracked」を付けることで未追跡ファイルも含めて保存できます。さらに「-a」または「–all」を使えば、ignore対象のファイルまで含めることが可能ですが、不要なビルド成果物などまで保存してしまうリスクがあるため注意が必要です。

部分的に変更をstashする(パッチモード)

全体ではなく特定のファイルや変更だけstashしたい場合、「git stash push -p」または「git stash push –patch」を使うとよいです。これにより、対話的に変更を選択でき、一部だけstashして他を残すことができます。これは大きな変更が混ざっていて、一部だけ後回しにしたいときなどに有効です。

stashから新しいブランチを作る方法

stashに保存した作業を、新しい機能や改善のためのブランチとして発展させることも可能です。「git stash branch ブランチ名 stash@{n}」を使えば、新しいブランチを作成しつつそのstashの内容を復元してブランチ上で作業できます。これにより、途中の作業を整理しつつ新たな作業ラインを確立できます。

git stash 使い方 トラブルシューティングと注意点

git stashは非常に便利なツールですが、使い方を誤ると混乱することもあります。例えば、stashを適用した際のコンフリクト発生、applyとpopの挙動の違い、stashを消してしまうミス、stashの復元が反映されない場合などが挙げられます。この章では、よくある問題とその解決策、さらに失敗を防ぐためのベストプラクティスを紹介します。

applyとpopで発生するコンフリクトの対処

stashを復元するとき、現在のブランチの状態とstashの内容が衝突することがあります。このようなコンフリクト時には、まずstashを適用する前に状態を確認することが重要です。applyやpopではコンフリクトが出たらGitがその操作を停止し、手動でコンフリクト部分を解決しなければなりません。popは通常stashを削除しますが、コンフリクトが発生した場合は削除されず、applyと同じように残ります。

ステージング状態(index)の復元とkeep-indexオプション

一般的なstashでは変更内容はワーキングツリーのみ復元され、ステージした状態(index)は復元されません。しかし、「–index」オプションを指定すると、ステージされた変更も含めて復元しようと試みます。このオプションは状況によっては失敗することがありますが、ステージ済みのファイルを復元したい場合には非常に便利です。

stashを誤って消したり見失ったりした場合の対応

stashをdropしてしまった、あるいはclearで全消去した場合でも、完全に復旧できないことがあります。dropの場合は該当のstashを特定できれば内容を参照して手動復元可能なこともあります。clearは完全にスタッシュを削除するため、極力使わないことが望まれます。定期的にstashを整理し、不要な stash を残さないよう心がけることが失敗防止につながります。

git stash 使い方 比較表で学ぶ apply・pop・drop 等の挙動

git stash 使い方を習得するにはコマンド同士の違いを比較して覚えるのが効果的です。この表では、代表的なstash系コマンド(apply、pop、drop、clear 等)の主な挙動を整理し、どのコマンドがどんな場面で使われるかを一目で理解できるようにしています。

コマンド 復元・適用 stashの残留 用途例
git stash apply ✔ 適用のみ ✔ 残る 複数ブランチで同じ変更を使いたいとき
git stash pop ✔ 適用する ✘ 通常削除される 終わった作業を戻してstashを整理したいとき
git stash drop ― 適用なし ✘ 対象削除 不要なstashを消したいとき
git stash clear ― 適用なし ✘ 全部削除 stashを一括で整理したいとき

git stash 使い方 最新ワークフローと実践例

日々の開発の中でgit stash を使う場面は多くあります。最新のツールやGitのバージョンでも使える効率的なワークフロー例を見ていきましょう。具体的な実践例とテンプレートを知ることで、自身のプロジェクトに合ったstash活用法が見えてきます。

緊急バグ修正のための一時退避→復元フロー

たとえば、機能追加の途中で本番環境のバグ対応をする必要が出た場合、まず現在の変更をstashします。
「git stash push -m バグ対応のため一時退避」のようにメッセージ付きでstashしておくと、後で何をstashしたか分かりやすいです。バグ修正を終えて元のブランチに戻ったら、「git stash pop」を使って保存していた作業を復元し、同時にstashを削除して整理された状態に戻せます。

複数ブランチで同じ変更を共有したいケース

複数のブランチで同じ設定変更やスタイル修正を使いたいときは、「git stash apply」を使います。stashを保持したまま異なるブランチに切り替えてapplyすることで、共通の変更を簡単に反映できます。その後使い終わったstashは「git stash drop」で明示的に削除します。

チーム開発でのstash運用のベストプラクティス

チーム開発の場合、stashの内容やメッセージはあとで共有されることが多いため、どの作業のstashか識別できる命名を心がけます。加えて、未追跡ファイルやignoreされたファイルを含める場合は、チームルールで扱いを明確にしておくと混乱が少なくなります。stashをいつpop/dropするかタイミングを決めて共有しておくと、stashの溜め込みによる不具合を防げます。

まとめ

git stash は、作業中の変更を一時的に退避させてワークツリーをクリーンな状態にするための強力な機能です。基本操作として、stashの作成・一覧確認・applyかpopでの復元があり、未追跡ファイルや指定したstashの復元などの応用的なオプションもあります。

注意点としては、applyとpopの違いやコンフリクト時の挙動、ステージング情報の復元、誤ってstashを消してしまうリスクです。比較表や実践例を参考に、自分の開発スタイルに合わせた使い方を設計してください。

正しい操作と整理されたstash管理を通じて、git stashが日常のトラブルを未然に防ぎ、スムーズな開発効率を実現してくれます。

関連記事

特集記事

コメント

この記事へのトラックバックはありません。

TOP
CLOSE