【Git救済】VS Codeで「未プッシュなのに古いバージョンに戻ってデータ消えた!」と焦った時の対処法

開発をしていて、今日ほど血の気が引いた日はありません。

VS Codeで作業中、まだGitHubにプッシュしていないのに、操作を誤って古いコミット(過去のバージョン)にチェックアウトしてしまったんです。画面から最新のコードがフッと消えて、数時間前の状態に戻った時のあの絶望感……。

でも安心してください。Gitはそう簡単にデータを消したりしません。 私と同じように青ざめている人のために、今回私が無事に生還した「4つの作戦」をまとめます。

作戦1:最強のショートカット「git switch -」

もし「一つ前の場所」に戻りたいだけなら、これが一番早くて確実です。

git switch -

Gitにおいて - は「一つ前の場所」を指します。焦ってブランチ名(mainなど)を正確に打てないときでも、これならハイフン一つで一瞬で戻れます。

作戦2:いつものブランチに指定して戻る

単に古いコミットを直接見に行ってしまった(いわゆる Detached HEAD という、ブランチという道から外れた宙ぶらりんの状態)なら、いつもの作業ブランチを指定して戻るだけです。

git switch main
# または
git checkout main

これで、そのブランチの最新の状態に復帰できます。

作戦3:神機能「ローカル履歴(Local History)」を使う

もし「まだGitでコミット(保存)すらしていなかったのに、エディタの操作ミスで変更が消えちゃった!」という場合、Gitのコマンドだけでは戻せません。

でも、VS Code を使っているならまだ希望はあります。エディタ自身が変更を自動保存している「ローカル履歴」を使いましょう。

  1. 対象のファイル(プログラム内でファイルパスなどを直書きする「ハードコーディング」は避けているはずなので、該当のファイルを探します)を右クリック
  2. 「ローカル履歴を表示(Show Local History)」 を選択
  3. タイムラインから数分前の状態を探して復元!

Gitのコミットに関係なく、エディタがあなたの作業を裏で守ってくれています。

作戦4:時空の迷子センター「git reflog」

色々いじりすぎて、自分が今どこにいるのか、どこに戻ればいいのか完全に分からなくなった時の最終奥義です。

git reflog

これは「あなたがGitで行ったすべての操作」が記録されている最強のログです。ここで最新の作業をしていた時点のハッシュ([ハッシュ値] のような英数字)を見つけたら、そこへチェックアウト(またはスイッチ)すれば、その瞬間の世界に戻れます。


まとめ:焦る前にこれだけは覚えておこう

今回学んだ最大の教訓は、「データが消えたと思っても、GitやIDEがどこかにバックアップを持ってくれている」ということです。

特に git switch - は、パニックを鎮める魔法の言葉です。

これからも色々な開発記録をこのブログに書いていこうと思います。同じようなトラブルで困っている誰かの助けになれば嬉しいです!