
はじめに
Gitで過去のファイル状態に戻したり、ブランチを切り替えるときに使われるのがgit checkout
です。便利な反面、1つのコマンドで多くの機能を持つため、最初は少し複雑に感じることがあります。
現在は、ブランチの切り替え専用のgit switch
や、ファイルの復元専用のgit restore
が登場し、役割が分かれています。それでもgit checkout
は今も多くの現場で使われており、幅広い操作に対応できる基本コマンドです。
この記事では、git checkout
の基本、git switch
との違い、使い方やトラブル回避のポイントまでを解説します。使い方を理解すれば、今後のGit操作がより柔軟になります。
Gitについての基本
Gitは、ファイルの変更履歴を管理するバージョン管理ツールです。個人の作業でもチーム開発でも、「誰が・いつ・何を」変更したのかを記録でき、安心して作業が進められます。
Gitの基本をさらに知りたい方は、以下の記事も参考にしてください。
▼Gitを基礎から学びたい方はこちら
【初心者向け】GitHubとは?必須知識と使い方について解説!
https://envader.plus/article/68
▼Gitコマンド早見表はこちら
必見!現場で役立つGitコマンド29選をまとめて紹介!
https://envader.plus/article/402
git checkoutとは
git checkout
とは、指定したブランチやファイル、過去のコミットの状態に切り替えるGitのコマンドです。
よく使われる用途は次の3つです。
- ブランチの切り替え
- ファイルの復元
- 過去のコミットへの一時的な切り替え
Git 2.23以降は、ブランチ切り替え専用のgit switch
や、ファイル復元専用のgit restore
が登場しました。それでもgit checkout
は、これらの操作をひとつでまとめて行える多機能コマンドとして、今も多くの現場で使われています。
git checkoutとgit switchの違い
git checkout
とgit switch
は、どちらもブランチを切り替えるためのコマンドですが、できることの範囲や使い方のわかりやすさに違いがあります。主な違いは次の3点です。
機能の範囲
git checkout
は、ブランチの切り替えだけでなく、ファイルの復元や過去の状態への移動など、幅広い操作が可能です。git switch
はブランチの切り替えに特化しており、目的が明確なぶんシンプルに使えます。
操作の安全性
git checkout
は多機能なため、使い方によっては作業内容が上書きされる可能性もありますが、正しく理解して使えば非常に便利です。git switch
は操作が限定されているため、誤操作のリスクが少なく、初心者でも安心して使えます。
直感的な名前
switch
は「切り替える」という意味そのままで直感的です。一方、checkout
は意味が広めですが、Gitの基本コマンドとして長く使われてきた実績があります。
このように、git checkout
は柔軟で便利なコマンドです。ブランチの切り替えだけでなく、ファイルの復元や過去の状態への移動まで、幅広い場面で活用できます。git switch
やgit restore
の登場で役割が分かれてきたものの、git checkout
を知っておくことで、より柔軟なGit操作ができるようになります。
それぞれのコマンドの違いについては、以下の記事でも詳しく解説しています。実践的な使い方も紹介していますので、ぜひ参考にしてください。
-
git checkout と git switch それぞれの使い方を比較する
-
Gitのrestoreを使ってファイルを元に戻そう!簡単ガイドとresetとの違い
git checkoutの使い方
このセクションでは次の3つの操作方法を紹介します。
- ブランチの切り替え
- 新しいブランチの作成と切り替え
- ファイルを過去の状態に戻す
ブランチを切り替える
既存のブランチに切り替える場合は、次のように実行します。
# 既存のブランチに切り替え
git checkout <ブランチ名>
例えば「feature/1」ブランチに切り替える場合は次の通りです。
# feature/1ブランチに切り替え
git checkout feature/1
新しいブランチを作成して切り替える
新しいブランチを作成して同時に切り替えたい場合は、-b
オプションを使用します。
# 新しいブランチを作成して切り替え
git checkout -b <新しいブランチ名>
例えば「feature/1」ブランチを作成して切り替える場合は次の通りです。
# feature/1ブランチを作成して切り替え
git checkout -b feature/1
Switched to a new branch 'feature/1'
1つのコマンドで「作成」と「切り替え」が同時にできる便利な操作です。
ファイルを過去の状態に戻す
間違って編集したファイルを、直前のコミットの状態に戻すこともできます。
# ファイルを最後のコミット時点の状態に戻す
git checkout HEAD <ファイル名>
たとえば「hello.txt」というファイルを元に戻したい際は、以下のように実行します。
git checkout HEAD hello.txt
これで、hello.txt は直前のコミットの内容に復元されます。変更がすべて消えてしまうため、慎重に使うようにしましょう。
複数ファイルまとめて元に戻す(git checkout .)
特定のファイルだけでなく、カレントディレクトリ以下の全ファイルをまとめて復元することもできます。
# カレントディレクトリ以下の全ファイルをまとめて復元
git checkout .
このコマンドを実行すると、直前のコミット時点の状態にすべてのファイルが戻り、現在の変更は破棄されます。
ポイント:
- 元に戻るもの(対象になる)
- Gitで管理されているファイルの編集内容の変更(
git add
する前の変更)
- Gitで管理されているファイルの編集内容の変更(
- 元に戻らないもの(対象外)
- Gitに追加していないファイル(未追跡ファイル)
git add
でステージしたファイルの変更
この操作は元に戻せません。 実行すると、ローカルでの変更内容は完全に失われるため、本当に戻したいときだけ使いましょう。
このように、git checkout
はブランチ操作からファイルの復元まで幅広く使える便利なコマンドです。使い方を理解していれば、安心して活用できます。
git checkoutのオプション紹介
git checkout
には、さまざまな場面で役立つオプションがあります。よく使うものを以下にまとめました。
オプション | 説明 |
---|---|
-b | 新しいブランチを作成して、そのまま切り替える |
-B | 既に存在するブランチを強制的に上書きして切り替える |
-f, --force | 未保存の変更があっても強制的に切り替える(内容は失われる) |
-t, --track | リモートブランチを追跡するローカルブランチを作成して切り替える |
これらのオプションを把握しておくことで、git checkout
をより柔軟かつ効率的に使いこなせるようになります。
次は、実際にこれらのコマンドを操作しながら、git checkout
の基本的な使い方をハンズオンで体験してみましょう。
git checkoutの使い方ハンズオン
実際に git checkout
コマンドを使って、ブランチの操作を体験してみましょう。まずは練習用の環境を作成してから、ブランチ操作を行います。
1. テスト用のリポジトリを作成
はじめに、テスト用のローカルリポジトリを作成します。
# 新しいディレクトリを作成
mkdir git-checkout-test
cd git-checkout-test
# Gitリポジトリを初期化
git init
2. 初期ファイルを作成してコミット
ブランチ操作の練習をするために、初期ファイルを作成します。
# hello.txtファイルを作成・Hello Worldを追加してコミット
echo "Hello World" > hello.txt
git add hello.txt
git commit -m "Hello World を追加"
3. 現在のブランチを確認
まず、現在どのブランチにいるかを確認します。
# 現在どのブランチにいるかを確認
git branch
実行結果例:
git branch
* main
現在のブランチには *
マークが付いています。初回作成時は通常 main
(または master
)ブランチが表示されます。
4. 新しいブランチを作成して切り替え
-b
オプションを使用して、新しいブランチを作成しながら切り替えます。
# 新しいブランチを作成しながら切り替え
git checkout -b feature/1-hello.txt
実行後、以下のメッセージが表示されれば成功です。
Switched to a new branch 'feature/1-hello.txt'
5. ブランチ一覧を確認
作成したブランチが正しく存在するかを確認してみましょう。
# ブランチの確認
git branch
実行結果例:
* feature/1-hello.txt
main
*
が付いているのが現在のブランチです。 feature/1-hello.txt
ブランチが作成され、切り替わっていることが確認できました。
6. 元のブランチに切り替える
元のブランチ(ここでは main
)に戻してみましょう。
# mainブランチに切り替え
git checkout main
実行結果例:
# 元のmainブランチに切り替える
git checkout main
Switched to branch 'main'
確認のため、再度ブランチ一覧を表示してみます。
# mainブランチに切り替わっていることを確認
git branch
feature/1-hello.txt
* main
main
ブランチに戻っていることがわかります。
7. 既存のブランチに再度切り替える
今度は、先ほど作成した feature/1-hello.txt
ブランチにもう一度切り替えてみましょう。
# 既存ブランチfeature/1-hello.txtに切り替え
git checkout feature/1-hello.txt
実行結果例:
# 既存ブランチfeature/1-hello.txtに切り替え
git checkout feature/1-hello.txt
Switched to branch 'feature/1-hello.txt'
確認のため、再度ブランチ一覧を表示してみます。
# ブランチの確認 「feature/1-hello.txt」ブランチに切り替わっていることを確認
git branch
* feature/1-hello.txt
main
feature/1-hello.txt
ブランチに切り替わりました。
8. ブランチごとに異なる作業を行う
ブランチが分かれていると、それぞれのブランチごとに違う作業内容を管理できます。以下のように、別の内容を追記してみましょう。
# feature/1-hello.txtブランチで新しい変更を追加
echo "Feature/1 Branch Content" >> hello.txt
git add hello.txt
git commit -m "Feature/1 branch用の変更を追加"
feature/1-hello.txt
ブランチのhello.txtの内容を確認します。先ほど追加した Feature/1 Branch Content
が入力されています。
cat hello.txt
Hello World
Feature branch content
次にmain
ブランチに切り替えます。
# mainブランチに切り替える
git checkout main
main
ブランチのhello.txtファイルの内容を確認します。
# mainブランチでファイル内容を確認
cat hello.txt
実行例:
# mainブランチでhello.txtファイルの内容を確認
cat hello.txt
Hello World
main
ブランチに切り替えると、最後に追加した Feature/1 Branch Content
が表示されないことが確認できます。このように、ブランチを使うことで作業内容を安全に分けて管理できます。
次のセクションでは、git checkout
を使った応用例や、操作ミスによるトラブルを回避するための実践的な知識をご紹介します。ブランチ操作をより安心して進めるためのコツを学んでいきましょう。
git checkoutの応用とトラブル回避例
git checkout
は便利な一方で、使い方を誤るとエラーや予期しない結果につながることもあります。このセクションでは、実際の開発現場でよくある操作例や注意点を紹介しながら、トラブルを未然に防ぐためのコツを解説していきます。
リモートブランチからローカルブランチを作成する
チーム開発では、他のメンバーが作成したリモートブランチに切り替えたい場面があります。そんなときは-t
オプションを使います。
まず、リモートの最新情報を取得しておきます。
# リモートの最新情報を取得
git fetch origin
その上で、リモートブランチからローカルブランチを作成します。
# リモートのブランチを元にローカルブランチを作成
git checkout -t origin/feature/2-greeting
この操作により、リモートブランチ origin/feature/2-greeting
を追跡する、ローカルブランチfeature/2-greeting
が作成されます。
タグ(tag)に切り替える
git checkout
では、タグ名を指定することで過去のバージョンに一時的に切り替えることもできます。
# タグを指定して過去の状態に切り替え
git checkout v1.0.0
このようにすると、v1.0.0
というタグが付けられたコミットの状態に移動できます。ただし、この状態は「detached HEAD(デタッチド・ヘッド)」状態です。作業を続ける場合は、新しいブランチを作成するのが安全です。
# 新しくブランチを作成
git checkout -b fix/v1.0.0-bug
補足:detached HEADとは
detached HEADとは、一時的に過去の状態に移動しているだけで、現在の作業がブランチに紐づかない状態です。そのまま作業を続けてコミットしても、履歴がブランチとして残らないため注意が必要です。
Gitのタグについては、以下の記事で詳しく解説しています。git tag
の基本から開発現場での活用例などを学べますので、ぜひご覧ください。
リリース管理に欠かせない!コミットにタグを付ける「git tag」コマンドの使い方
https://envader.plus/article/367
未コミットの変更があるとき
作業中の変更をコミットせずに、他のブランチへ切り替えようとするとエラーが出る場合があります。これは、現在の変更が切り替え先のブランチに上書きされる可能性があるためです。
補足:
未コミットの変更があるときでも、ファイルの競合がなければ変更はそのまま持ち越されます。つまり、競合の可能性があるときだけエラーになります。
エラーメッセージ例:
error: Your local changes to the following files would be overwritten by checkout:
hello.txt
Please commit your changes or stash them before you switch branches.
Aborting
このエラーの対処法は、主に次の3つです。
-
変更をコミットする
変更内容をコミットすることで、ブランチの変更が可能になります。
git add hello.txt git commit -m "作業内容をコミット" git checkout feature/1-hello.txt
-
変更を一時的に保存する
変更をコミットしたくない場合は、一時保存してから切り替える方法もあります。
# 変更を一時的に退避する git stash git checkout feature/1-hello.txt # 一時的に退避した変更を後で復元 git stash pop
-
強制的に切り替える
-f
オプションを使うと強制的に切り替え可能ですが、変更内容が失われるため注意が必要です。# 強制的にブランチを切り替える git checkout -f main
※この方法は未保存の変更が完全に失われてしまうため、重要な作業内容がある場合は使用を避けてください。
補足:git stashとは
git stash
は、作業中の変更を一時的に退避しておける便利なコマンドです。コミットせずに別のブランチへ切り替えたいときや、一時的に作業を中断したいときに役立ちます。
git stashについて、詳しく知りたい方はこちらの記事もおすすめです。
git stashとは?基本の使い方から活用方法、注意点まで徹底解説
https://envader.plus/article/344
過去のコミットに切り替え
git log
などで確認した過去のコミットに一時的に戻って内容を確認したいときは、コミットIDを指定して切り替えることができます。
# コミットを指定して切り替え
git checkout 4f2e3a7
ただしこの場合もタグを指定したときと同様、「detached HEAD」状態になります。このまま作業してコミットしてもブランチに記録されないため、作業を続けたいときはブランチを作っておくのが安全です。
# 新しくブランチを作成
git checkout -b hotfix/past-bugfix 4f2e3a7
このようにすれば、過去の状態をもとにしたブランチが作成され、作業内容も履歴に残すことができます。
さまざまなGitコマンドを活用できるようになると、Git操作に自信がつきます。もし、Git操作が不慣れと感じている方には、次に紹介する学習方法がおすすめです。
Gitの使い方を学ぶ:おすすめの学習方法
「Gitの操作、まだちょっと不安かも…」そんな方におすすめなのが、「エンベーダー」です。 Gitの基本コマンドをはじめ、エンジニアに欠かせないLinuxの知識や操作をブラウザ上で気軽に学べる学習サービスです。
環境構築は不要。わずか5秒で学習環境が起動し、実際にコマンドを入力しながら学べるので、ゲーム感覚で楽しくスキルを習得できます。
エンベーダー公式サイト - Gitの使い方コース
https://envader.plus/course/5/scenario/1055
ポイント1:コマンド入力はすべてブラウザ上で完結。実際に手を動かして学べます。
ポイント2:入力したコマンドの正誤や解説を、すぐに確認できます。
ポイント3:Gitだけでなく、Linuxやデータベース操作など、今後のキャリアに活かせる学習コースも豊富に用意されています。
エンベーダーの学習コース一覧
いくつかのコースは無料で体験できるため、「コマンドに慣れたい」「楽しくGitを身につけたい」という方は、ぜひ一度エンベーダーを試してみてください。
この記事で学んだこと
この記事では、Gitの基本コマンドであるgit checkout
について、ブランチの切り替えや新規作成、ファイルや過去の状態への復元といった操作を中心に、実践的な使い方を学びました。
git checkout
は多機能なコマンドで、ブランチの切り替えからファイルの復元まで幅広く活用できます。現在は、ブランチ切り替え専用のgit switch
やファイル復元専用のgit restore
も登場していますが、git checkout
はこれらの操作をひとつでまとめて行える多機能コマンドとして、今も多くの現場で使われています。
実際に手を動かして試すことで、理解は一層深まります。ぜひこの記事を参考に、git checkout
を活用してみてください。
参考資料
以下のリンクは、この記事で解説した手順や概念に関連する参考資料です。より詳しく学びたい方は、ぜひご覧ください。
-
Git公式ドキュメント:git-checkout
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

関連記事

2023.11.26
gitのコミット履歴を整理するためにsquashを使いこなそう
Squashは、複数のコミットを1つのコミットにまとめる操作です。Squashを使用すると、コミットの履歴を整理したり、コミットのメッセージや変更内容を変更したりすることができます。
- インフラエンジニア
- git

2024.05.08
Gitコマンド「git mv」とは?「mv」との違いをあわせて解説します!
この記事では、git mvについての解説を行います。
- git

2024.05.27
ソースコードにパッチファイルを適用するGitコマンド「git apply」について徹底解説!
この記事では「git apply」コマンドについて解説します。
- git

2024.06.02
Gitコマンド「git reflog」とは?「HEAD」も併せて解説!
git reflogはGitが保持する「reflog(リファレンスログ)」を表示するコマンドです。
- git