git checkoutのオプション完全ガイド!ブランチ切り替えからファイル復元まで
こんにちは、とまだです。
Gitでブランチを切り替えようとして、エラーが出て困ったことはありませんか?
私も初めてGitを触ったときは、checkoutコマンドの意味が分からず苦労しました。
今回は、git checkoutの各種オプションについて、初心者の方でも理解できるように解説します。
git checkoutとは?
git checkoutは、簡単に言うと「切り替える」コマンドです。
例えば、図書館で本を借りるとき。 今読んでいる本を返して、別の本を借りますよね。
git checkoutも同じです。
今作業している状態から、別の状態に切り替えます。
切り替えられるもの
git checkoutで切り替えられるものは3つあります。
まず、ブランチの切り替えです。 開発用のブランチから、テスト用のブランチへ移動できます。
次に、特定のコミットへの移動です。 過去の状態を確認したいときに使います。
最後に、ファイルの復元です。 間違えて編集したファイルを元に戻せます。
git switchとの違い
最近はgit switchというコマンドも登場しました。
git switchはブランチ切り替え専用です。 一方、git checkoutはファイル操作もできます。
つまり、git checkoutの方が多機能なんです。
代表的なオプション一覧
それでは、よく使うオプションを見ていきましょう。
各オプションの使い方を、実例付きで説明します。
-b:新規ブランチを作って切り替え
新しい機能を作るとき、まずブランチを作りますよね。
通常は2つのコマンドが必要です。 ブランチを作って、そのブランチに切り替える。
でも、-bオプションなら1回で済みます。
git checkout -b feature/login
このコマンドで、feature/loginブランチを作成。 同時に、そのブランチに切り替わります。
作業がとてもスムーズになりますね。
--:ファイルを元に戻す
コードを書いていて「やっぱり元に戻したい」。 そんなときはありませんか?
--オプションを使えば、簡単に戻せます。
git checkout -- index.html
このコマンドで、index.htmlが最新のコミット時点に戻ります。
ただし、変更内容は完全に消えてしまいます。 実行前に、本当に戻していいか確認しましょう。
--track:リモートブランチを追跡
チーム開発では、リモートにあるブランチを使うことが多いです。
例えば、同僚が作ったブランチで作業を続けたい。 そんなときに--trackオプションが便利です。
git checkout --track origin/feature/design
これで、リモートのfeature/designブランチを取得。 ローカルでも同じ名前のブランチができます。
さらに、リモートとの連携も自動で設定されます。
-f:強制的に切り替え
作業中の変更を保存せずに、別のブランチに移りたい。 でも、Gitがエラーを出して切り替えられない。
そんなときは-fオプションです。
git checkout -f main
ただし、これは危険な操作です。
保存していない変更は全て消えてしまいます。 本当に必要なときだけ使いましょう。
その他の便利なオプション
--orphanオプションは、履歴のない新規ブランチを作ります。 ドキュメント専用ブランチなどで使います。
-pオプションは、対話形式でファイルを選べます。 部分的に変更を取り消したいときに便利です。
実践!よくある使用例
ここからは、実際の開発でよく使うパターンを紹介します。
新機能の開発を始める
新しい機能を作るときの手順です。
まず、mainブランチから始めます。 そこから新しいブランチを作ります。
# mainブランチに移動
git checkout main
# 新機能用のブランチを作成して切り替え
git checkout -b feature/user-profile
ブランチ名は分かりやすくしましょう。 何の機能か一目で分かると、後で助かります。
チームメンバーの作業を引き継ぐ
同僚が作ったブランチで作業を続ける方法です。
まず、リモートの情報を更新します。 それから、該当ブランチを取得します。
# リモートの最新情報を取得
git fetch origin
# リモートブランチを追跡
git checkout --track origin/feature/api-update
これで、同僚の作業の続きができます。
間違えた変更を取り消す
CSSを編集していて、デザインが崩れてしまった。 そんなときの対処法です。
# 特定のファイルだけ元に戻す
git checkout -- style.css
ファイル単位で戻せるのが便利ですね。
全体を戻す必要がないので、効率的です。
過去の状態を確認する
「先週は動いていたのに...」 そんなときは過去のコミットを確認します。
# コミットIDを指定して移動
git checkout abc123def
この状態を「デタッチドHEAD」と呼びます。
確認が終わったら、元のブランチに戻りましょう。 そのまま作業すると、履歴が複雑になります。
トラブル対処法
git checkoutでよくあるトラブルと解決方法です。
エラーで切り替えられない
変更がある状態でブランチを切り替えようとすると。 Gitがエラーを出すことがあります。
解決方法は3つあります。
1つ目は、変更をコミットすること。 2つ目は、stashで一時保存すること。 3つ目は、変更を破棄すること。
状況に応じて選びましょう。
デタッチドHEAD状態から抜け出せない
過去のコミットを見た後、戻り方が分からない。 そんなときは落ち着いて対処しましょう。
# 元のブランチに戻る
git checkout main
もし作業を保存したい場合は。 新しいブランチを作ってから移動します。
# 現在の状態で新規ブランチを作成
git checkout -b hotfix/recovery
強制オプションで変更が消えた
-fオプションで変更が消えてしまった。 残念ながら、基本的には復元できません。
だからこそ、使用は慎重に。
大切な変更は、必ずコミットかstashで保存しましょう。
まとめ
git checkoutは、Gitの基本的で重要なコマンドです。
主なオプションをおさらいします。
-bで新規ブランチ作成と切り替えが同時にできます。 **--**で特定ファイルを元の状態に戻せます。 --trackでリモートブランチとの連携が簡単になります。 -fは強制切り替えですが、使用は慎重に。
これらのオプションを使いこなせば。 開発作業がグッと効率的になります。
まずは-bオプションから始めてみてください。 慣れてきたら、他のオプションも試してみましょう。
Gitは使えば使うほど、その便利さが分かってきます。 少しずつ、確実に身につけていきましょう。
著者について

とまだ
フルスタックエンジニア
Learning Next の創設者。Ruby on Rails と React を中心に、プログラミング教育に情熱を注いでいます。初心者が楽しく学べる環境作りを目指しています。
著者の詳細を見る →