🔖
git restore と git checkout の違いを整理する
はじめに
Gitで「ファイルを元に戻したい」と思ったとき、
以前は git checkout
を使うのが一般的でした。
しかし Git 2.23 から git restore
という新しいコマンドが追加され、
現在は操作の目的に応じてコマンドを使い分けることが推奨されています。
本記事では、「checkout
とrestore
の違い」を整理します。
git checkout
は複数の役割を担っていた
かつての git checkout
は、以下のような複数の用途に使われていました。
- ブランチの切り替え
- ファイルの復元
git checkout main.py
これでインデックス(ステージングエリア)の状態の main.py
へ戻ります。
しかし、コマンドの意図がわかりづらいのが難点でした。
git restore
は復元専用のコマンド
Git 2.23 以降で使える git restore
は
ファイルを「元に戻す」ための専用コマンドです。
git restore main.py
作業ツリーの変更を破棄して、最新コミットの状態へ戻します。
使い分けポイント
操作内容 | 従来のコマンド | 現在の推奨コマンド |
---|---|---|
ブランチを切り替える | git checkout <ブランチ名> |
git switch <ブランチ名> |
作業ツリーのファイルを戻す | git checkout main.py |
git restore main.py |
git add 済みの変更を取り消す |
git checkout HEAD main.py |
git restore --staged main.py |
過去のコミット時点に戻す | git checkout <コミットID> main.py |
git restore --source <コミットID> main.py |
※「git add
済みの変更」とは、コミット予定の変更内容を一時的にステージ(インデックス)に追加した状態のことです。
checkout
は使ってはいけない?
今でも checkout
は使えます。
ただし、意図の明確化のため、今は分離した方がよいとされています。
✅ ファイルの復元なら
git restore
✅ ブランチの切り替えならgit switch
おわりに
現在のGitは、コマンドを明確な意図ごとに分離させる方針になっています。
これは「わかりやすさ」「誤操作防止」のためです。
checkout
を使い続けてこられた方も、
この機会に restore
や switch
の利用を取り入れてみるのも良いかもしれません。
本記事が参考になれば幸いです。
🔗関連記事
Discussion