git checkoutはどう使う?
git switchとの使い方の違いがわからない
過去のコミットを参照したい
Gitを使い始めたばかりだと、checkoutコマンドの使い方がよく分からず、困ってしまうこともありますよね。
本記事では、git checkoutの基本的な使い方から、git switchとの使い分けまで、初心者向けに丁寧に解説します。
Gitチェックアウトができる3つの主な機能
git checkoutは、Gitのリポジトリ内で作業場所を移動したり、作成したりするコマンドです。
ブランチを切り替えたり、新しいブランチを作成したりすることで、さまざまな開発タスクを効率的かつ安全に進められます。
主な役割は、以下の3つです。
- ブランチの切り替え
- 過去のコミットの参照
- ファイルの復元
別の開発ラインに移動したいときはブランチの切り替え、前に行った作業状態を確認したいときは過去のコミットを参照します。
誤ってファイルを上書きしてしまった場合でも、git checkoutを使えば、以前のバージョンに簡単に戻すことが可能です。
このような役割を理解することで、git checkoutを効果的に使いこなせるようになります。
Git2.23以降では、ブランチ切替にはgit switch、ファイルの復元にはgit restoreの使用が推奨されています。わかりやすくて安全に操作できます。
Gitチェックアウトの基本的な構文
git checkoutの基本的な構文は、以下の通りです。
git checkout [オプション] <どこへ>
<どこへ>の部分には、切り替えたいもの(ブランチ名、コミットID、ファイルパスなど)を指定しましょう。
たとえば、mainブランチからdevelopに移動したい場合は以下のように記述します。
git checkout develop
特定のコミットに戻りたいときは、以下のようにコミットIDを指定します。
git checkout a1b2c3d4
特定のファイルを以前の状態に戻したいときは、次のように書きます。
git checkout a1b2c3d4 index.html
このようにブランチ名やコミットID、ファイルパスなどを使い分けることで、さまざまな操作が可能です。
具体的な使い方は、次の章から説明していきます。
Gitチェックアウトの基本的な使い方
Gitのチェックアウトの使い方を以下の目的別に解説します。
- ブランチの切り替え
- 新しいブランチを作成して切り替え
- ファイルの復元
- 過去のコミットの参照
目的に合った使い方をチェックしてみてください。
ブランチの切り替え
ブランチの切り替えは、git checkoutの一般的な使い方です。
ブランチの切り替えをすると、作業ブランチを移動し、異なる開発ラインでの作業を開始できます。
以下の構文で指定したブランチを作業ブランチに切り替えられます。
git checkout <移動したいブランチ名>
たとえば、feature-new-buttonというブランチに移動したい場合は以下のように書きます。
git checkout feature-new-button
実行すると、現在の作業場所がfeature-new-buttonブランチに移動します。
パソコン上のファイルも、feature-new-buttonブランチが最新の状態に切り替わります。
Git 2.23以降では、ブランチの切り替えはgit switchコマンドを使うのがおすすめです。よりシンプルでわかりやすく使えます。
新しいブランチを作成して切り替え
今のブランチはそのままで、新しい機能の開発を始めたいときは-bオプションを使用します。
-bオプションは新しいブランチを作成し、同時にそのブランチに移動できます。
git checkout -b <新しいブランチ名>
たとえば、mainブランチからfeature-add-loginという新しいブランチを作成し、すぐにそのブランチで作業を開始したいときは以下のように記述します。
git checkout -b feature-add-login
一つのコマンドで、以下の2つが同時に行われます。
- feature-add-login ブランチが新しく作られる
- 作業場所が feature-add-login ブランチに切り替わる
-bオプションを使用すると既存ブランチに影響を与えることなく、新しい機能の開発やバグ修正に集中できます。
Git 2.23以降では、新しいブランチの作成と切り替えはgit switch -cコマンドを使うのがおすすめです。
ファイルの復元
間違えてファイルを上書きしたときや過去のバージョンに戻したいときは、git checkoutで過去のファイルを復元できます。
ファイルの復元の構文は、以下の通りです。
git checkout <コミットIDまたはブランチ名> — <ファイルパス>
たとえば、「index.html を3日前の状態に戻したい」という場合は、次の手順で作業を進めます。
git log -- index.html
でindex.htmlの変更履歴を見る- 戻したい時点のコミットIDをチェックする(コミットIDがa1b2c3d4と仮定する)
git status
で現在の状態を確認する- 以下のコマンドを実行する
git checkout a1b2c3d4 — index.html
コマンドを実行すると、index.html だけがa1b2c3d4の時点の状態に戻り、他のファイルは影響を受けません。
復元されたファイルは、自動的に「変更されたファイル」としてステージングエリアに追加され、すぐにコミットできる状態になります。
チェックアウトの前に、git statusで現在の状態を確認することで、コミットしていない変更が消えてしまうのを防げます。
ファイルの復元には、Git 2.23以降ではgit restore コマンドの使用が推奨されています。
過去のコミットの参照
一時的に過去のコミットの状態を確認したい、あるいは過去のコミットから新しいブランチを作成したい、といった場合には、以下の構文を使用します。
git checkout <コミットID>
特定のファイルだけを戻したい場合は<ファイルパス>を後ろにつけます。
git checkout a1b2c3d4 — index.html
Detached HEAD状態になったとき
Detached HEAD状態になると、コミットはどのブランチにも属さなくなるため、通常は避けるべきです。過去のコミットを参照した後に、新しいブランチを作成するか、既存のブランチにチェックアウトして作業を続けるようにしましょう。
Gitチェックアウトのオプション一覧
git checkoutのオプションはさまざまありますが、ここでは現場でよく使用する5つのオプションを表にまとめました。
使用例 | 内容 |
---|---|
<ブランチ名> |
指定したブランチに切り替える。<br>例: git checkout feature |
-b <新しいブランチ名> |
新しいブランチを作成し、そのブランチに切り替える。<br>例: git checkout -b fix/bug |
-- <ファイル名> |
ステージングエリアからファイルを取り消す。作業ディレクトリの変更は保持する。<br>例: git checkout -- index.js |
<コミットID> <ファイル名> |
指定したコミット時点のファイルの状態に戻す。<br>例: git checkout abc1234 style.css |
-f, --force |
ワーキングツリーのローカルの変更を強制的に破棄してチェックアウトする。<br>例: git checkout -f main |
git checkoutは、主にブランチを切り替える際に使用するコマンドです。
新しい機能を追加したりバグを修正したりする際は、git checkout -b <新しいブランチ名>
で作業を始めましょう。
元のブランチに影響を与えず、安全に作業を進められて、非常に便利です。
git checkoutを実行する前には、git statusコマンドで現在の状態を確認する習慣をつけましょう。
「まだコミットしていない変更がありますよ」といった情報を確認でき、「変更が消えてしまった」という事態を防げます。
少しずつgit checkoutコマンドを使いこなし、Gitの便利さを実感していきましょう。
git checkoutとgit switchの使い分け完全ガイド
ここではgit checkoutとgit switchの違いと使い分けを紹介します。
- git checkoutとgit switchの機能比較
- git checkoutとgit switchの状況に応じた使い分け
気になる項目から確認してみてください。
git checkoutとgit switchの機能比較
git checkoutとgit switchの違いをスッキリ整理し、どんな時にどちらを使えば良いのかを、わかりやすく解説します。
それぞれの機能を以下の表にまとめました。
git switch | git checkout | |
---|---|---|
ブランチの切り替え | ◯ | ◯ |
新しいブランチの作成と切り替え | ◯ | ◯(-bオプション) |
過去コミットの参照 | × | ◯ |
ファイルの復元 | × | ◯ |
表を見ると、git switchはブランチの切り替えや作成に特化したシンプルなコマンドということがわかります。
git checkoutは、ブランチ操作や過去のコミットの参照、ファイルの復元もできる多機能コマンドという特徴があります。
これらから、「ブランチの操作だけしたい」ときは git switch、「過去に戻ったり、ファイルを復元したりしたい」ときはgit checkoutを使うと良いでしょう。
【目的別】git checkoutとgit switchの早見表
Gitには、ブランチを切り替えるためのコマンドとして、git checkoutの他にgit switchがあります。
どちらを使用したらいいか迷わないために、以下に状況に応じた使い分けを表にまとめました。
目的 | おすすめコマンド | 備考 |
---|---|---|
ブランチを切り替える | git switch <ブランチ名> |
|
新しいブランチを作成して、すぐにブランチを切り替えたい | git switch -c <新しいブランチ名> |
-c はcreateの略 |
過去のコミットの状態を見る | git checkout <コミットID> |
Detached HEAD状態になるので注意 |
ファイルを過去のバージョンに戻す | git checkout <コミットID/ブランチ名> <ファイルパス> |
git restoreコマンドの方が安全でおすすめ |
特に理由はないけど、ブランチを切り替えたい | git switch <ブランチ名> |
|
ファイルのステージングを取り消す | git checkout -- <ファイル名> |
git restore –stagedがおすすめ |
使い分けのポイントは、過去のコミットやファイル操作もするならgit checkout、ブランチ操作が中心ならgit switchを選ぶことです。
まずはgit switchから始め、必要に応じてgit checkoutを活用していくことをおすすめします。
git switchはブランチの切り替え専用に作られたコマンドのため、「ブランチを切り替えるならgit switch」と覚えやすく、初心者もシンプルで直感的に使用できます。
Gitチェックアウトのよくある4つのトラブルと解決策
git checkoutでよくある4つのトラブルの対処法を紹介します。
- git checkoutができない
- コンフリクトの発生
- Detached HEADモードからの復帰
- ファイル変更の取り消し
これらのトラブルの対処法を参考に、git checkoutで発生する問題を解決し、スムーズな開発につなげましょう。
1. git checkoutができない
git checkoutができないときは、最初にgit statusで確認しましょう。
git status
よくある原因は、作業ディレクトリが「クリーンでない」状態、つまりコミット前の変更が残っていることです。
git checkoutでブランチを切り替えると、作業ディレクトリの内容が指定したブランチの状態に更新されます。
コミットされていない変更があると、上書きされて消えてしまう可能性があるため、Gitは処理を中断します。
具体的な対処法は、以下の3つです。
- 変更をコミットして残す
- 変更を一時的に退避させる
- 変更を破棄する(元に戻さない)
それぞれの対処法を以下の表にまとめました。
対処法 | 説明 |
---|---|
変更をコミットして残す | 変更をリポジトリに記録する。git addで変更をステージングエリアに追加し、git commitでコミットする。 |
変更を一時的に退避させる | 変更を一時的に隠す。git checkoutの後、git stash popで変更を元に戻す。 |
変更を破棄する(元に戻さない) | 変更を完全に破棄する。git clean -fdは、追跡されていないファイルやディレクトリも全て削除するため、使用には十分注意してください。 |
git statusで状態を確認後、上記いずれかの方法で対処し、再度git checkoutを試してみてください。
2. コンフリクトの発生
異なるブランチで同じファイルの同じ場所を変更していると、チェックアウト時にコンフリクト(衝突)が発生することがあります。
Gitはどちらの変更を残すべきか判断できないため、手動での解決が必要です。
コンフリクトが発生したファイルには、以下のようなマーカーが表示されます。
<<<<<<< HEAD
ブランチAでの変更
======= ブランチBでの変更
>>>>>>> ブランチ名
<<<<<<< HEAD
から=======
までが、現在のブランチでの変更箇所です。
=======
から>>>>>>>ブランチ名
までが、チェックアウトしようとしているブランチでの変更箇所を示しています。
どちらの変更を残すか、あるいは両方の変更をどのように組み合わせるかを決めて、コンフリクトマーカー(<<<<<<<、=======、 >>>>>>>)と不要なコードを削除します。
修正したファイルを保存し、以下のコマンドを実行しましょう。
git add <ファイル名>
実行するとコンフリクトが解消されるため、改めてcheckoutを実行する必要はありません。
コンフリクトは、チーム開発ではよく起きます。落ち着いて、変更箇所を比較しながら、正しい状態に戻しましょう。
3. Detached HEADモードからの復帰
git checkout <コミットID>
で過去のコミットを参照すると、「Detached HEAD」状態になります。
これは、HEAD(現在の位置を示すポインタ)が特定のコミットを直接指している状態です。
Detached HEADは、過去のバージョンを一時的に確認する際には便利ですが、この状態でのコミットはどのブランチにも属しません。
既存のブランチに戻すには、git checkout <ブランチ名>
を実行します。
Detached HEADでの変更を保持したい場合は、git branch <新しいブランチ名>
で新しいブランチを作成してから、既存のブランチに戻りましょう。
4. ファイル変更の取り消し
git checkoutでファイル変更を取り消せますが、Gitの新しいバージョン(2.23以降)はgit restoreコマンドの使用がおすすめです。
git checkoutでファイル変更を取り消す方法は、以下の2つです。
過去バージョンで復元 | git checkout <コミットID/ブランチ名> — <ファイル名> |
ステージング取り消し | git checkout — <ファイル名> |
git checkoutは、意図しない操作をしてしまう可能性がありますが、git restoreなら安心して使えます。
ファイルの復元が専用のコマンドであるgit restoreは、ステージングを取り消し、作業ディレクトリの変更破棄が明確に分かれています。
git restoreで落ち着いてファイル変更を取り消す場合は、以下の記述で可能です。
ステージング取り消し | git restore –staged <ファイル名> (git add の取り消し) |
作業ディレクトリの変更破棄 | git restore <ファイル名> |
これらの操作は基本的に元に戻せません。
作業ディレクトリ内のファイルが、指定した状態(過去のバージョンやステージングエリアの状態)で上書きされ、変更前の状態は失われます。
git statusで状態を確認してから、慎重に実行してみてください。
まとめ:git checkoutをマスターしてレベルアップ!
git checkoutは、ブランチ操作、過去バージョン参照、ファイル復元など、Web制作にも役立つGitコマンドです。
-bオプションでのブランチ作成や、git statusでの状態確認は、安全かつ効率的な開発の基本といえます。
「Gitをもっと深く学びたい」「チーム開発で必要なスキルを身につけたい」「Web制作のスキル全体をレベルアップしたい」という方はデイトラWeb制作コースがおすすめです。
実践的な課題を通して、現場で通用するGitの使い方、Web制作の総合的なスキルが習得できます。
実践的なカリキュラムで、プロのスキルを身につけたい方はチェックしてみてください。
未経験からコーディングを学ぶならデイトラWeb制作コースがおすすめ!
デイトラWeb制作コースは、実務レベルの本格スキルを学び、Web制作を仕事にしたい方におすすめのコースです。
HTML/CSSやjavaScriptの言語の基本はもちろん、デザインカンプからのコーディング、WordPressのオリジナルテーマ作成までカリキュラムに含まれています。
さらに、中級・上級の最終課題はメンターによる課題レビューがあります。現場目線の品質チェックが受けられるため、大幅なスキルアップが期待できるでしょう。
Web制作のスキルを身につけたい方は、ぜひデイトラWeb制作コースをチェックしてみてください!