Gitコマンド:checkoutとswitch/restoreの違い | Lapis Tech IT用語辞典
Gitの基本コマンド「checkout」の使い方と、近年推奨されている「switch」「restore」コマンドとの違い・使い分けについて分かりやすく解説します。
git checkout とは?
git checkout は、Gitにおいて長年使われてきた多機能コマンドで、主に以下の2つの役割を持っています。
- ブランチを切り替える(作業場所の移動)
- ファイルを過去の状態に戻す(変更の取り消し)
しかし、「切り替え」と「取り消し」という全く異なる2つの機能が1つのコマンドにまとまっていたため、初心者が混乱しやすいという問題がありました。
現代のGit(Git 2.23以降)での推奨コマンド
そこで、Gitのバージョン2.23からは、checkout の責務を明確に分けるための新しいコマンドが導入されました。現在では以下の使い分けが推奨されています。
ブランチの切り替え = git switch
ブランチを移動したい時は switch を使います。
# mainブランチに切り替える
git switch main
# 新しいブランチを作成して、そこに切り替える (checkout -b と同じ)
git switch -c new-feature
ファイルの復元・変更取り消し = git restore
コミット前の変更を取り消して元の状態に戻したい時は restore を使います。
# index.html の変更内容を取り消して、最後のコミット状態に戻す
git restore index.html
# ステージング(git add)したファイルを取り消す (unstageする)
git restore --staged index.html
いつ checkout を使うべきか?
現在でも git checkout は廃止されておらず、そのまま使い続けることができます。古いマニュアルやネット上の技術記事では checkout で説明されていることが多いため、読み替える知識として覚えておく必要があります。
-
古い書き方:
git checkout main -
新しい書き方:
git switch main -
古い書き方:
git checkout -- file.txt -
新しい書き方:
git restore file.txt
まとめ
これからGitを学ぶ方や、新しいチーム開発に参加する場合は、操作を間違えて大事な変更を消してしまわないためにも、役割が明確な git switch と git restore を積極的に使うことをお勧めします。