サイトアイコン ITC Media

git checkoutの基本から実践例までをコマンド付きで解説

(最終更新日:2023年8月)

✔当記事は以下のような方に向けて書かれています

「git checkoutコマンドについて詳しく知りたい」
「git checkoutの使用方法を学びたい」
「git checkoutコマンドの具体的な実行例を確認したい」

✔当記事を通して伝えるポイント

当記事ではgit checkoutコマンドの基本から、そのオプションを駆使した応用法までを具体的な例を交えて詳細に語ります。

ぜひ最後までご一読いただき、git checkoutコマンドの理解を深めてください。

筆者プロフィール

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

git checkoutの基本

ここでは、「git checkout」について深く掘り下げていきます。

「git checkout」の重要性を理解し、その主な機能を探求することは、効果的なバージョン管理にとって不可欠です。

「git checkout」の重要性

「git checkout」は、プロジェクトの異なるバージョン間での移動や、特定のコミットへのジャンプなどを可能にするコマンドです。

これにより、コードの過去の状態を確認したり、既存のバージョンから新しいブランチを作成することが容易になります。

git checkout -b newbranch

「git checkout」の主な機能

「git checkout」は主に2つの機能を持っています。

Gitについて知っておくべきこと

次に、Gitについて知っておくべきことをおさらいしていきましょう。

前提知識なので、理解いただいている方は先へお進みください。

バージョンコントロールとは?

バージョンコントロールは、ファイルの変更履歴を追跡するプロセスです。

特定の時点でファイルを保存したり、過去のバージョンに戻したりが可能になります。

チームでの作業においては、複数の人の同時作業でも、互いの変更を上書きしないで済むのもメリットです。

Gitの概要と有用性

Gitは、その強力な機能と柔軟性により、個人のプロジェクトから大規模なエンタープライズプロジェクトまで対応しています。

分散型のシステムとして、各ユーザーが完全なリポジトリのコピーを持てる仕組みからです。

オフラインでの作業や複数のワークフローのサポートなどが可能となります。

「git checkout」が解決する課題

「git checkout」は、バージョン管理における多くの課題を解決します。

解決できる課題の主なものは以下のとおりです。

「git checkout」はGitの中心的なコマンドとなり、効果的なバージョン管理に欠かせないツールです。

ブランチ切り替えの基本

次に、Gitの基本的な要素であるブランチの切り替えについて掘り下げていきます。

ブランチの切り替えについて理解し、その基本的な手順を学び、具体的な実践例を見ていきましょう。

ブランチの切り替えとは?

ブランチの切り替えとは、Gitにおいて、異なるバージョンに移動すること。

ブランチは、プロジェクトの異なるバージョンを表現します。

同じリポジトリ内で、複数の異なるタスクを同時進行する際に、ブランチの切り替えが必要な場面があるのです。

ブランチ切り替えの基本的な手順

ブランチの切り替えは、「git checkout」コマンドを使用しておこないます。

以下は、切り替えたいブランチ名が「feature」である場合のコマンドです。

git checkout feature

このコマンドにより、カレントブランチが「feature」ブランチに切り替わります。

ブランチ切り替えの実践例とヒント

ブランチの切り替えは、新機能の開発やバグの修正など、複数のタスクを同時進行する際に有効です。

新機能開発の「feature」ブランチと、既存のバグを修正する「bugfix」ブランチがある場合、次のようにしてブランチを切り替えられます。

git checkout bugfix  # バグ修正のためのブランチに切り替え
# 修正作業を行う

git checkout feature # 新機能開発のためのブランチに切り替え
# 開発作業を行う

ブランチの切り替えを使うことで、異なるタスク間で素早く移動することができ、作業の効率化に貢献します。

リモートからのブランチ取得

リモートリポジトリからブランチを取得することは、チームでの開発や共同作業において重要な作業のひとつです。

リモートブランチの取得方法

リモートリポジトリからブランチを取得するには、次のコマンドを使用します。

git fetch origin

リモートリポジトリ(この場合は’origin’)から、全てのブランチとその最新のコミットが取得されます。

git checkout コマンドを使用して、特定のブランチに切り替えられるのです。

リモートブランチが見つからないときの対応策

リモートブランチが見つからない場合、最初に確認すべきはリモートリポジトリが正しく設定されているかどうかです。

リモートリポジトリのリストを表示するには、次のコマンドを使用します。

git remote -v

正しいリモートリポジトリが設定されているかを確認できます。

リモートリポジトリが正しく設定されているにもかかわらずブランチが見つからない場合は、リモートリポジトリから最新の情報を取得するために git fetch origin を実行してください。

リモートブランチ取得の注意点とベストプラクティス

リモートブランチを取得する際には、最新の情報を常に保ちましょう

なぜならほかの開発者がおこなった変更を逃してしまうと、作業中の内容が古いものになってしまうこともあるからです。

作業を始める前や作業を再開する前には、常に git fetch origin をおこなってください。

また、新しいブランチを作成する際には、可能な限り最新のマスターブランチから作成することを心掛けましょう。

ファイル復元の基本

次に、ファイルの復元方法について詳しく見ていきましょう。

実際の現場で、誤った作業をしてしまった際に、使える方法です。

ファイル復元とは?

ファイルの復元とは、誤って削除したファイルや以前のバージョンに戻したいファイルを、元に戻せる機能のこと。

Gitには、これらの状況を解決するための強力な機能が備わっているのです。

具体的には、git checkoutを使って、前のコミット時の状態に戻します。

特定のコミット履歴へ戻る

特定のコミット履歴へ戻るためには、以下のgit checkoutコマンドを使用します。

git checkout <commit> -- <file>

ここでの<commit>は、取得したいコミットのハッシュです。

このコマンドを実行すると、指定したコミット時点のファイル状態が現在のワーキングツリーに反映されます。

コミットのハッシュは、git logコマンドで取得できます。

ファイル復元の使用例と実践ガイド

以下の例をご覧いただきます。

important.txtを削除してしまったが、そのファイルを3つ前のコミット時点に戻したい

git checkout abc123 -- important.txt

ここで、abc123はコミットハッシュです。

このコマンドを実行すると、ファイルimportant.txtは3つ前のコミット時点の状態に戻ります。

git checkoutを使用して特定のコミット状態に戻すことで、誤った操作からすぐに復元できるのです。

ブランチの生成と切り替え

次に、新しいブランチの作成とそのブランチへの切り替えについて説明します。

新しいブランチの作成方法

新しいブランチを作成するには、以下のgit checkoutコマンドに -b オプションを使用します。

ここで、<new-branch>は新しく作成するブランチの名前です。

git checkout -b <new-branch>

このコマンドは新しいブランチを作成し、そのブランチに直ちに切り替える作業を一度におこないます。

ブランチの切り替えの詳細

以下のコマンドで、既存のブランチに切り替えられます。

git checkout <branch>

また、-bオプションを使用すると新しいブランチを作成し、そのブランチへの切り替えを同時におこなえます。

ブランチの生成と切り替えの実践例とヒント

新しい機能を開発する際には、その機能専用の新しいブランチを作成するのが一般的です。

例えば、新機能「feature1」を開発するためには、以下のように新しいブランチを作成します。

git checkout -b feature1

こちらでの作業が完了したら、git checkoutコマンドを使用してメインブランチに戻りましょう。

マージの基本

ブランチの生成と切り替えを理解したら、次にブランチのマージについて学びましょう。

マージはブランチで行われた変更をひとつにまとめ、その変更を他ブランチに取り入れるための手段です。

マージとは?

マージは、ブランチでおこなわれた変更を、別のブランチに適用するプロセスです。

これにより、複数のブランチでおこなわれた作業を統合できます。

マージの基本的な手順

マージはgit mergeコマンドを使用しておこないます。

以下は、ブランチfeatureの変更を現在のブランチにマージするコマンドです。

git merge feature

このコマンドにより、featureブランチの変更が現在のブランチに適用されます。

マージの実践例とヒント

新機能feature1の開発が完了し、その変更をメインブランチにマージしたい場合、次のようにします。

git checkout main    # メインブランチに切り替える
git merge feature1   # feature1の変更をメインブランチにマージする

このプロセスにより、feature1ブランチでおこなわれた変更がメインブランチに適用されます。

ただし、マージにはコンフリクト(衝突)が生じる可能性があります。

これは、2つのブランチで同じ部分が異なる方法で変更されたときに発生するもの。

コンフリクトが発生した場合、手動で解決する必要があります。

プルリクエストの基本

最後に、GitHubなどのプラットフォームで頻繁に使用されるプルリクエストについて学びましょう。

プルリクエストは、あるブランチの変更を別のブランチにマージするためのリクエストであり、コードレビューや変更の討論の場として利用されます。

プルリクエストとは?

プルリクエストは、ひとつのブランチの変更を別のブランチに統合するためのリクエストです。

特にオープンソースプロジェクトやチームでの開発では、プルリクエストを使用してコードのレビューや討論をおこないます。

プルリクエストの作成とマージ

GitHubや類似のプラットフォームでは、Webインターフェースを通じてプルリクエストを作成およびマージすることが可能です。

通常、プルリクエストは以下の手順でおこないます。

  1. リモートリポジトリに変更をプッシュ
  2. リポジトリのWebページに移動し、「New pull request」ボタンをクリック
  3. プルリクエストの詳細を記入し、「Create pull request」ボタンをクリック
  4. レビュー後、プルリクエストをマージ

プルリクエストの実践例とヒント

プルリクエストは、コードのレビューやフィードバックを受け取るための効果的なツールです。

新しい機能を開発した後、その変更をメインブランチにマージする前に、プルリクエストを作成することで、ほかのメンバーにコードのレビューを依頼できます。

また、コードの変更が大きい場合や重要な変更の場合には、プルリクエストを使って変更を小さな部分に分割し、それぞれを個別にレビューしてもらうと、コードの品質を保てます。

ここでは、feature1という新しい機能を開発した場合のプルリクエストの作成方法を見ていきましょう。

1.ローカルリポジトリで作業をおこない、feature1ブランチを作成

git checkout -b feature1

2.変更をfeature1ブランチにコミット

git add .
git commit -m "Add feature1"

3.ブランチをリモートリポジトリにプッシュ

git push origin feature1

4.プルリクエストの作成

GitHubのWebインターフェースを開き、New pull requestボタンをクリック。

変更をマージするブランチとfeature1ブランチを選択し、プルリクエストの詳細を記入します。

Create pull requestボタンをクリックしてプルリクエストを作成してください。

レビューが完了したら、プルリクエストをマージします。

まとめ

Gitは、複数人でのプロジェクトやバージョン管理にとって非常に強力なツールです。

その基本的な操作は、以下のように多岐に渡ります。

これらを理解し、実践に活用することで、コードの品質を保ち、効率的な開発をおこなえます。

モバイルバージョンを終了