章: 第2章: 履歴を読み解く
「戻したい」の中身を分解して考える
Gitでよく混乱するのが、git restore と git 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 rm と git mv を扱います。 Git管理下のファイル削除や移動を、履歴を保ちながらどう扱うかを整理します。