1. ホーム
  2. 記事一覧
  3. git checkoutとは?現在の役割とgit switchとの使い分けを解説

2025.12.14

git checkoutとは?現在の役割とgit switchとの使い分けを解説

    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 checkoutgit switchは、どちらもブランチを切り替えるためのコマンドですが、できることの範囲や使い方のわかりやすさに違いがあります。主な違いは次の3点です。

    機能の範囲

    git checkoutは、ブランチの切り替えだけでなく、ファイルの復元や過去の状態への移動など、幅広い操作が可能です。git switchはブランチの切り替えに特化しており、目的が明確なぶんシンプルに使えます。

    操作の安全性

    git checkoutは多機能なため、使い方によっては作業内容が上書きされる可能性もありますが、正しく理解して使えば非常に便利です。git switchは操作が限定されているため、誤操作のリスクが少なく、初心者でも安心して使えます。

    直感的な名前

    switchは「切り替える」という意味そのままで直感的です。一方、checkoutは意味が広めですが、Gitの基本コマンドとして長く使われてきた実績があります。

    このように、git checkoutは柔軟で便利なコマンドです。ブランチの切り替えだけでなく、ファイルの復元や過去の状態への移動まで、幅広い場面で活用できます。git switchgit restoreの登場で役割が分かれてきたものの、git checkoutを知っておくことで、より柔軟なGit操作ができるようになります。

    それぞれのコマンドの違いについては、以下の記事でも詳しく解説しています。実践的な使い方も紹介していますので、ぜひ参考にしてください。

    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 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つです。

    1. 変更をコミットする

      変更内容をコミットすることで、ブランチの変更が可能になります。

      git add hello.txt
      git commit -m "作業内容をコミット"
      git checkout feature/1-hello.txt
    2. 変更を一時的に保存する

      変更をコミットしたくない場合は、一時保存してから切り替える方法もあります。

      # 変更を一時的に退避する
      git stash
      git checkout feature/1-hello.txt
      
      # 一時的に退避した変更を後で復元
      git stash pop
    3. 強制的に切り替える

      -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やデータベース操作など、今後のキャリアに活かせる学習コースも豊富に用意されています。

    エンベーダーの学習コース一覧

    https://envader.plus/course

    いくつかのコースは無料で体験できるため、「コマンドに慣れたい」「楽しくGitを身につけたい」という方は、ぜひ一度エンベーダーを試してみてください。

    この記事で学んだこと

    この記事では、Gitの基本コマンドであるgit checkoutについて、ブランチの切り替えや新規作成、ファイルや過去の状態への復元といった操作を中心に、実践的な使い方を学びました。

    git checkout多機能なコマンドで、ブランチの切り替えからファイルの復元まで幅広く活用できます。現在は、ブランチ切り替え専用のgit switchやファイル復元専用のgit restoreも登場していますが、git checkoutはこれらの操作をひとつでまとめて行える多機能コマンドとして、今も多くの現場で使われています

    実際に手を動かして試すことで、理解は一層深まります。ぜひこの記事を参考に、git checkoutを活用してみてください。

    参考資料

    以下のリンクは、この記事で解説した手順や概念に関連する参考資料です。より詳しく学びたい方は、ぜひご覧ください。

    【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

    IT未経験者必見 USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

    プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。

    「フリーランスエンジニア」

    近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。

    「成功する人とそうでない人の違いは何か?」

    私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。

    比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。

    多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、

    note記事3000いいね超えの殿堂記事 LINE登録で記事を見る

    エンベーダー編集部

    エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

    RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

    関連記事