【Git】git checkout のオプションは何がある?便利なオプションを実例付きで解説
はじめに
ソフトウェア開発で使われるGitは、複数人でコードを管理するときにとても役立つツールです。
その中でもgit checkoutコマンドは、ブランチを切り替えたり特定のファイルを以前の状態に戻したりと、多くのシーンで利用されています。
ただ、初心者の方にとっては「そもそも何をしているコマンドなのか」「どのオプションを使えばよいのか」がわかりにくいところではないでしょうか。
そこで本記事では、git checkout オプションにフォーカスし、代表的な使い方や実務での活用例を交えながら解説します。
実際の開発現場では、チームメンバーとのやり取りで間違ったブランチに切り替えてしまうこともあります。
しかし正しくgit checkoutを使いこなせば、作業をスムーズに進めるだけでなく、不要なトラブルを回避することも可能です。
これからGitを学び始める方や、基本的なコマンドしか使ったことがない方は、ぜひ参考にしてください。
この記事を読むとわかること
- git checkoutコマンドの基本的な役割と動作
- オプションの使い方や注意点
- 実務で役立つ具体的な活用例
ここからは、初心者の方でも理解しやすいように平易な言葉で説明していきます。
各オプションを利用する具体的なコード例も紹介しますので、ぜひ試してみてください。
git checkoutとは?
git checkoutは、指定したブランチやコミット、あるいは特定のファイルの状態に切り替えるためのコマンドです。
このコマンドを使うと、作業中のブランチを別のブランチへ移動するだけでなく、修正前のファイルへ戻すこともできます。
Gitを使いこなすうえで欠かせない機能なので、まずはどのような処理をしているかイメージしてみましょう。
リポジトリ内の“ある瞬間の状態”を取り出す
Gitは変更履歴を扱うツールです。
作業中のプロジェクトにはたくさんのコミットが並んでおり、それぞれが「ある瞬間の状態」を記録しています。
git checkoutは、その「ある瞬間の状態」を手元に呼び出す仕組みです。
- ブランチを切り替える場合
- 特定のコミットに遡る場合
- 変更内容を取り消し、元の内容に戻す場合
これらの操作はすべて、git checkoutによって「どのコミットに切り替えるか」を指定していると考えるとわかりやすいかもしれません。
git switchとの違い
最近はgit switchコマンドも広く使われ始めています。
これは、ブランチの切り替え機能に特化したコマンドです。
一方、git checkoutはブランチの切り替えだけでなく、特定のファイルを以前の状態に戻すという機能も持っています。
そのため、どちらを使うかは開発スタイルによって変わりますが、git checkoutはファイル操作も含めた包括的なコマンドなので、まだまだ利用される場面が多いと言えるでしょう。
git checkoutの代表的なオプション
git checkoutには多くのオプションが存在します。
ここでは実務でよく使う主なオプションを紹介しましょう。
-b で新規ブランチを作成して切り替え
-bオプションを付けると、指定した名前の新しいブランチを作成して、同時にそのブランチに切り替えられます。
git checkout -b feature/new-ui
たとえば上記のコマンドを実行すると、feature/new-ui
という新しいブランチを作成し、作業中のブランチを一度に切り替えられます。
新機能を実装するときや、テスト目的で新しいブランチを作りたいときなどに便利です。
-- ファイルを元に戻す
バグ修正中や実験的なコードを書いていたとき、「やっぱり変更を取り消したい」ということがありますよね。
そんなときは、git checkout -- ファイル名
を使うことで、特定のファイルを最新のコミット状態に戻すことができます。
git checkout -- src/App.js
変更がコミットされていない場合でも、コミットされた状態にファイルを戻せるため、誤った修正をリセットするときに役立ちます。
ただし、すでにコミットしてしまった場合の修正は別の手順が必要になりますので、タイミングに気をつけて活用してください。
--track でリモートブランチを追跡
チーム開発では、リモートリポジトリ上にブランチが存在することがよくあります。
--track
オプションを使うと、リモートブランチをチェックアウトしつつ、追跡ブランチとして設定できます。
git checkout --track origin/develop
これにより、リモートブランチorigin/develop
からローカルブランチdevelop
を作成し、ローカルとリモートを連動させる状態になります。
日常的に複数人で作業している場合は、リモートブランチを引っ張ってきて作業を始める場面が多いかと思いますが、このオプションを利用することでスムーズにブランチを設定できます。
-f で強制的に切り替える
何らかの理由で作業ツリーに未コミットの変更が残っている場合、通常はブランチの切り替えがブロックされることがあります。
-fオプション(--force
)を使うと、強制的に切り替えることが可能です。
git checkout -f develop
ただし、未コミットの変更が失われる可能性が高いので、慎重に使用してください。
誤って大事な修正を消してしまうと復元が難しくなることがあります。
そのほかのオプション
--orphan
: 新しいブランチを作る際に、親コミットが存在しない状態(履歴がない)で開始する-p
: 対話形式で特定のファイルや変更だけを選んでチェックアウトする
これらは場面が限られますが、知っておくと特殊なケースで役立ちます。
扱い方が複雑な場合もあるので、使う際は事前にリハーサルしてみるとよいでしょう。
実務で役立つ具体的な操作例
ここからは、具体的にどのような手順でgit checkoutを使うのかを簡単に見ていきましょう。
ブランチを素早く作成して切り替える
新機能開発では、-bオプションを用いたブランチ作成から始める場合が多いです。
# メインブランチにいるとする git checkout main # 新しいブランチを作成して切り替え git checkout -b feature/add-payment
ブランチの名前は、何の作業をするか明確にすると管理が楽になります。
いきなり新しいブランチを作成すれば、メインブランチの安定した状態を壊さずに安全に作業を進められます。
リモートブランチを元に作業を始める
チームで開発していると、同僚がすでにリモートブランチで作業している場合が多いでしょう。
そのブランチを手元に持ってきて、続きを作業したいときに便利なのが**--track**です。
git fetch origin git checkout --track origin/feature/design-update
これでリモート上のorigin/feature/design-update
を取得し、ローカルでも同名のブランチとして作業を続けられます。
ファイルを元に戻す
ちょっとした修正をしてみたけれど、あまり良くなかった…そんなときに便利なのがgit checkout -- ファイル名
です。
# 変更を破棄してコミット前の状態に戻す git checkout -- src/styles.css
このように、間違えた変更を即座に引き返すことで、余分な混乱を避けることができます。
元に戻すかどうか迷ったまま作業を続けるよりも、なるべく早めに修正を取り消してクリーンな状態を保つと効率が上がるでしょう。
特定ファイルを戻すのは便利ですが、保存していなかった修正は失われてしまいます。戻す前に、本当に必要な変更がないかどうか確認してから実行すると安心です。
過去のコミットに一時的に戻る
実務では「動いていた頃の状態を確認したい」というシーンも少なくありません。
過去のコミットに移動するなら、コミットハッシュを指定します。
# 過去のコミットにチェックアウト(コミットIDは例) git checkout 1a2b3c4d
この操作を行うと、「デタッチドHEAD(detached HEAD)」という特殊な状態になります。
この状態で作業を続けてもブランチに履歴が積み重ならないため、新たにブランチを作ってやるかどうかを意識して使うことが大切です。
もし、この過去コミットからブランチを作りたい場合は、再び**-bオプション**を使うことで作業内容を反映させやすくなります。
# 過去コミットをチェックアウトした後、ブランチを作成 git checkout -b hotfix/restore-legacy
こうすることで、過去の状態をベースに新しいブランチを立ち上げることができます。
実務での活用シーン
ここでは、もう少し踏み込んで実際の現場でどのように使われているかをイメージしてみましょう。
チーム開発でのバグ修正
チーム作業中にバグが見つかったら、修正専用のブランチを作成するのが一般的です。
その際に、git checkout -bを使って素早くブランチを作り、問題のコードだけ修正し終わったらプルリクエストを送ります。
もし途中で試しに書いた修正がうまくいかなければ、対象のファイルだけをgit checkout -- ファイル名
で戻せるため、修正内容をクリアにできるのが助かるポイントです。
実装方針の分岐
新機能を実装していて、異なるアプローチを試してみたい場合には、新しいブランチを派生させることが多いです。
たとえば、ある作業ブランチからさらに**-bオプション**で別ブランチを作り、複数の方法を試してみます。
うまくいった方をメインに取り込む形で、不要になったブランチは破棄すればいいわけです。
コードレビューや動作確認
他のメンバーが作成しているブランチを手元で動かして確認したい場面もあるでしょう。
その際にgit checkout
で相手のブランチをローカルに用意し、実行してみることで不具合や改善点を見つけやすくなります。
もしも相手のブランチがリモートリポジトリにしかない場合は、--track
オプションを使うとセットアップがスムーズです。
よくあるトラブルと対処方法
切り替えられないエラーが出る
作業ツリーに未コミットの変更がある場合、Gitは「変更を失いたくないだろう」と判断してエラーを出すことがあります。
不要な変更であればgit checkout -- ファイル名
などでリセットし、必要な場合はコミットやstashしてから切り替えるようにしましょう。
デタッチドHEAD状態になっていた
過去のコミットやタグを直接チェックアウトすると、HEADがブランチを指していない状態、いわゆるデタッチドHEADになります。
そのままコミットしてもブランチには記録されないので、作業したい場合は**-bオプション**でブランチを作成してください。
もしデタッチドHEADのまま作業してしまった場合でも、git branch
コマンドで新たにブランチを作ることで、その作業内容を失わずにブランチとして管理することが可能です。
強制オプションで失敗
-f
(force)オプションを使うと、未コミットの変更を失うことがあるため注意してください。
どうしても必要であれば、必ずバックアップを取ったりstashを使ったりして、変更を退避させたうえで切り替えましょう。
まとめ
git checkoutは、ブランチの切り替えやファイルの復元などさまざまな場面で活躍する便利なコマンドです。
実務でも頻繁に使われるため、操作をしっかり理解しておくとチーム開発がスムーズになるはずです。
- -b: 新規ブランチを作って一気に切り替える
- --: 特定ファイルを最新コミット時点に戻す
- --track: リモートブランチを追跡できる
- -f: 強制的に切り替える(要注意)
それぞれのオプションは使いどころを押さえれば、不要なトラブルを回避し、開発効率を上げる手助けになります。
ブランチをこまめに作成する運用に慣れれば、作業の切り替えや試行錯誤も自由度が増します。
ぜひこれを機に、git checkout オプションを使いこなしてみてください。