Gitブランチ切替前の確認事項:未保存の変更を管理
この記事はAIの支援を受けて原文を翻訳したものです。専門用語や数式は原文とあわせて確認してください。
別ブランチを確認したいとき修正ファイルが残っていれば、まず何がどこに保管されているか整理する必要があります。エディターで未保存の文章、ディスクに保存済みだが未コミットのコード、新規の未追跡ファイルでは保管方法が異なります。切替前の状態を読むと重要な変更を忘れることを減らせます。

以下のmainとfeature-noteは説明用ブランチ名です。実リポジトリにある名前へ変える必要があり、コマンドは利用者のリポジトリへ自動実行される手順ではありません。サブモジュールや進行中マージのない単純なリポジトリを基準に説明し、実エラーは表示を別途確認します。
ブランチ切替と作業復元の順序一覧
説明用の図 — 実際の画面・試験結果ではありません。
1. エディターの内容を実ファイルへ保存
2. 現在ブランチ・追跡・未追跡変更を確認
3. 必要範囲を保管し結果を照合
4. 目的ブランチへ切り替え実状態を確認
5. 元の作業位置で保管内容を適用・確認
1. エディター保存とGitコミットは別段階
エディターのタブに未保存表示があれば、内容はまだディスク上のファイルと異なる可能性があります。Gitで保管する前に残す内容を保存し、実パスを確認してください。別名ファイルや別プロジェクトフォルダーへ保存すると、現在のリポジトリ状態を読んでも見つからない場合があります。
ディスク保存はGitコミットへの包含ではありません。Gitは作業フォルダー、コミットする変更を集めるインデックス、コミット記録を区別します。「未保存コード」よりエディター未保存かGit未コミットかを示すと必要作業が明確になります。
| 状態 | どこを確認するか? | 保管前の作業 |
| エディター未保存 | タブ表示と実ファイルパス | 残す内容をファイルへ保存 |
| 修正された追跡ファイル | Git状態と差分 | コミットまたは一時保管の範囲を決定 |
| 新規未追跡ファイル | 状態の新ファイル一覧 | 保管対象へ含めるか決定 |
| 無視されたファイル | 実ファイルと無視規則 | 必要なら別途保管を確認 |
架空の開発者がメモをエディター内だけで修正してGit stashを作っても、未保存の文が保管されたと断定できません。重要な内容はエディターとディスクを先に合わせ、Gitで観察した範囲へつなげる必要があります。Git記録はエディターの全一時状態を代替しません。
2. 切替前に現在ブランチと変更一覧を読む
git status --short --branch
git diff
git diff --cached
状態では現在ブランチと変更ファイル、差分では実修正内容を読みます。通常の非マージ時の短形式では第一欄がインデックス、第二欄が作業フォルダーの状態です。疑問符二つは未追跡ファイルであり、既定の状態一覧には無視ファイルが出ない場合があります。
架空の結果にnotes.txtの修正とnew-plan.txtの未追跡表示があれば、両者を保管計画へ入れるか決めます。追跡ファイルの差分だけでは新ファイルが漏れるため状態一覧も見ます。new-plan.txtの内容を読み必要な作業資料か区別してください。
現在ブランチ名と戻る位置を書くのも役立ちます。名前が似れば誤った場所で復元を始める可能性があります。「前のブランチへ戻る」という曖昧な記憶より実名と保管記録をつなげる方が切替後に判断しやすくなります。
3. コミットする変更と一時保管する変更を選ぶ
完成した意味ある作業ならプロジェクトの慣例に沿ってコミットできます。進行中ならstashの一時保管を検討できます。両選択は完成度と戻る計画で決め、切替のため不要ファイルまで一括コミットしません。
架空のnotes.txtとnew-plan.txtが作成中なら一時保管するファイルを明確にします。既存コードの一部修正と新文書が同じ作業か読み、保管記録へ名前を付けます。後から複数記録ができた際、説明があると必要項目を選びやすくなります。
重要資料が追跡対象外なら保管条件を別途確認します。一時保管は現在リポジトリへ再適用する作業手段であり、外部バックアップや全編集状態の保持を自動保証する概念にはしません。新規・無視ファイルを漏らさないことが核心です。
4. 未追跡ファイルを含む一時保管の例
git stash push -u -m "before-switch-demo"
git stash list
git stash show -p -u 'stash@{0}'
git status --short --branch
上の例は新規未追跡ファイルも含めるため-uを指定します。Git公式文書は作業フォルダー・インデックス保管、-uの未追跡包含、-aの無視ファイル包含を区別します。基本例に-aは入れないため、無視ファイルまで保存されたと思ってはいけません。
stash後は一覧と差分を読み、実際の記録を確認します。stash@{0}はその時点の最新項目なので、追加保管後は必要項目を選び直す必要があります。PowerShellでは中括弧を含む参照を例のように引用符で囲んで渡せます。
現在状態も再読します。未保管ファイルや別変更が残る場合があるためです。架空の無視フォルダーlocal-outputが重要なら、-uの結果だけで内容保持済みとは記録しません。残るものを確認し、必要ファイルを適切な別方法で保管します。

5. 切替拒否なら強制オプションより残る変更を確認
git switch main
git status --short --branch
mainが実在し確認したい例です。Git公式文書によれば切替に常にクリーンな作業フォルダーが必要ではありませんが、ローカル変更を失う切替は既定で中断されます。未コミット変更で必ず失敗する、または切替ですべて消えるとは説明できません。
拒否文が出れば対象ファイルと残る変更を読み、保管範囲を再確認します。進行中マージ・競合など別条件も別途扱う必要があります。エラーを消すためすぐ変更破棄オプションを付けると、残す作業と切替目的がずれる場合があります。
成功時は実際の現在ブランチを確認します。コマンド入力と切替結果は分けて読む必要があります。変更が残れば内容を確認し、新ブランチでの作業か決めます。予想外のファイルが見えれば次の編集前に元記録と照合してください。
6. 元のブランチで保管内容を再適用
git switch feature-note
git stash list
git stash apply 'stash@{0}'
git status --short --branch
これはfeature-noteへ戻り、一覧で確認した記録を適用する説明例です。実際は必要項目の説明と内容を読んで参照を選びます。常に最新を使うと別作業を適用する可能性があるため、名前と時点を照合してください。
公式文書はapplyが保管項目を一覧に残し、popが適用と除去を組み合わせると区別します。競合の可能性があり成功を自動前提にしません。この記事は元の一時記録を維持して結果を読むためapplyを使います。
インデックスに追加済みの状態まで再現する目的は別途確認が必要です。通常applyとインデックス復元オプションの差を公式文書で読み、実プロジェクトに合わせて選んでください。内容が戻ることとコミット準備状態まで同じであることを同じ結果として記録しません。
7. 競合やファイル欠落時の確認
適用時に競合したら現在ブランチの内容と保管修正が重なるか確認します。元作業と新ブランチ変更を比較し残す内容を決める必要があります。不明な状態で同項目を繰り返し適用すると複雑になるため、まず生じた結果を読みます。
新ファイルが戻らなければ最初の保管範囲に含まれたか、選んだstashが正しいか確認します。エディター内だけの資料か、無視規則に入ったかも照合してください。複数原因をすべて「stashが消した」とまとめず、保存前記録と実一覧をつなげる必要があります。
| 復元後の確認 | 根拠 |
| 元の作業ブランチか? | 現在ブランチの表示 |
| 必要ファイルが戻ったか? | ファイル一覧と実内容 |
| 新ファイルもあるか? | 未追跡ファイルと保管差分 |
| 競合が残るか? | 状態と該当ファイル内容 |
| 一時記録が維持されるか? | stash一覧 |
8. 作業再開で残す短い記録
架空の作業メモは「feature-noteの文書修正と新計画ファイルを保管、mainを確認、元ブランチへ復帰、指定項目を適用、内容を照合」と整理できます。実施順序を残す記録であり、未確認の復元成功を追加する用途ではありません。
保管項目の整理前は必要内容が戻ったか、競合解決済みか確認します。一覧整理は元の一時記録を消す選択なので作業確認後に判断します。この記事は一括削除コマンドを示さず、全保管項目が不要とも仮定しません。
切替前はエディター保存、状態の読取、保管範囲確認、切替後は実ブランチと復元内容の確認を行ってください。各段階の根拠が残れば、短い切替作業が進行中の修正を失わず続ける手順になります。図はこの流れを自作した説明図です。
公式情報源と執筆基準
資料確認日:2026-10-07。実際に開いた公式資料に基づきAIが作成した説明です。別途表示した計算・コード・点検事例は説明用であり、利用者環境を直接試験したり実測したりした結果ではありません。公開日には機能と資料の変更状況を再確認します。
本文の理解を助けるために制作したオリジナルイラストです。
Tistoryの原文 ↗