第06回: git restoreとgit resetの違い — 「戻す」と言っても戻している場所が違う

章: 第2章: 履歴を読み解く

「戻したい」の中身を分解して考える

Gitでよく混乱するのが、git restoregit reset です。どちらも「戻す」文脈で登場しますが、対象が違います。

何を戻したいのかを分けて考えることが大切です。

  • 作業中のファイルを戻したいのか
  • ステージした内容を戻したいのか
  • コミットの位置を動かしたいのか

ここを曖昧にすると、意図しない範囲まで戻してしまいます。

git restore が向いている場面

作業中ファイルを元に戻したいときは git restore がわかりやすいです。


git restore index.php

これで、未ステージの変更を破棄してファイルを元に戻せます。

また、ステージだけ戻したいなら次のようにも使えます。


git restore --staged index.php

こちらはファイル内容ではなく、ステージ状態だけを戻す操作です。

git reset が向いている場面

git reset はもっと広く、コミット位置やステージ状態に関わる操作です。

たとえば直前のコミットを取り消して、変更は残したい場合は次のように使います。


git reset --soft HEAD~1

一方で、ステージだけ外したい用途でも使えますが、最近はその用途なら git restore --staged の方が意図が読みやすいです。

まずはこう使い分ける

やりたいこと まず使う候補
作業中のファイル変更を捨てたい git restore
ステージを外したい git restore --staged
コミット位置を戻したい git reset

初心者のうちは、reset を万能の「戻すコマンド」として使わない方が安全です。restore で済むならそちらを優先した方が意図が明確になります。

実務での考え方

実務では「戻す」操作ほど慎重に扱います。なぜなら、戻す対象を間違えると必要な作業まで失うからです。

焦ってコマンドを打つより、

  • 今戻したいのは作業ツリーか
  • ステージか
  • コミット履歴か

を先に言葉で整理した方が安全です。

チェックポイント: restore はファイル寄り、reset は履歴・位置寄り。この認識で入ると混乱が減ります。

まとめ & 次のステップ

  • git restore は作業中ファイルやステージ状態を戻すのに向いている
  • git reset はコミット位置やステージに関わる操作
  • 「何を戻したいか」を先に整理することが重要
  • 初心者のうちは restore を優先すると意図が明確
  • 戻す操作ほど範囲を慎重に確認する

次回は git rmgit mv を扱います。 Git管理下のファイル削除や移動を、履歴を保ちながらどう扱うかを整理します。

Related Articles