Gitを使って開発を行う際に、作業内容を切り分けるためにブランチは複数活用されるのが基本です。
そのため、必要に応じてローカルの作業ブランチをその都度変更する必要があります。
ブランチの切り替え時に使用するのが、checkout コマンドです。
今回の記事では、Gitで checkout コマンドを使用してブランチを切り替える方法について、詳しく解説していきたいと思います。
git checkoutとは?
git checkout コマンドは、ローカルブランチの切り替えを行いたい場合に使用するコマンドです。
現在作業を行っているブランチから別のブランチへと変更したい時に、このコマンドを使用して切り替えを行います。
また、ブランチの切り替えのみに限らず、新規ブランチの作成コマンドとしても活用することができます。
git checkoutの使い方
checkout コマンドの詳しい使い方について、順に確認していきましょう。
基本構文
checkoutコマンドを使用する際は、以下のように記述します。
【基本構文】
git checkout ブランチ名コマンドの引数に任意のブランチ名を指定することで、作業ブランチを切り替えることができます。
ただし、指定した名前のローカルブランチが存在しない場合は、エラーとなり切り替えできません。
例外として、リモート追跡ブランチに同名のブランチ名がある場合には、対象のリモートブランチの内容をチェックアウトしたローカルブランチが新規に作成されます。
また、コミットされていない変更内容が現在の作業ブランチに存在する場合にも、エラーが発生して切り替えできない時があります。
具体的には、未コミットの変更内容があり、かつコンフリクトが発生している場合です。
そのままブランチを切り替えてしまうと、変更内容が上書きされて消えてしまうため、ブランチの切り替えが中止されます。
この場合は、git commit コマンドで内容をコミットするか、もしくは git stash コマンドで退避させるなどしてから、checkoutコマンドを実行するようにしましょう。
ブランチの切り替え
それでは、実際に checkout コマンドを使って切り替えを行ってみましょう。
簡単な例を元に、一連の流れで説明していきます。
まずは、cd コマンドで対象プロジェクトのディレクトリまで移動します。
cd ディレクトリパス移動が完了したら、コマンドを実行してブランチの切り替えを行います。
使用可能なブランチの一覧を確認したい場合は、以下のコマンドで表示することができます。
git branchコマンドを実行すると、以下のような形式で一覧が表示されます。
$ git branch
* main
developアスタリスク (*) の付いているブランチが、現在の作業ブランチとなります。
今いるブランチを確認したい場合は、以下のコマンドでも表示することができます。
git branch --containsブランチの確認ができたら、checkout コマンドで任意のブランチに切り替えましょう。
例えば、上記の例で develop ブランチに切り替える場合は、以下のように記述します。
git checkout develop切り替えが無事に完了すると、以下のようなメッセージが表示されます。
$ git checkout develop
Switched to branch 'develop'
Your branch is up to date with 'origin/develop'.上記の例は、切り替え先のブランチの状態が最新である場合の表示です。
リモートブランチを追跡している状態で、リモート側のブランチの状態が更新されている場合は、以下のようなメッセージが表示されます。
Your branch is behind 'origin/develop' by 1 commit, and can be fast-forwarded.
(use "git pull" to update your local branch)切り替え後にブランチの状態を最新にしたい場合は、git pull コマンド、もしくは git fetch コマンドと git merge コマンドの両方を実行してください。
(pullコマンドは fetch と merge を同時に行うコマンドです)
error: Your local changes to the following files would be overwritten by checkout :
ファイル名この場合は上述したように、変更内容のコミットや退避などを行ってから再度コマンドを実行しましょう。
git checkoutのオプション
checkoutコマンドの実行時にオプションを付けることで、動作内容の一部を変更することができます。
使用可能なオプションの中から、いくつか抜粋して紹介します。
-b ブランチの作成とチェックアウト
新規ブランチを作成して切り替えたい時に便利なのが、-b オプションです。
通常、ブランチの作成には git branch コマンドを使用しますが、このオプションを付けることでブランチの作成と切り替えを同時に行うことができます。
git checkout -b 新規ブランチ名このコマンドは、以下の2種類のコマンドを実行するのと同じ動作になります。
git branch 新規ブランチ名git checkout 新規ブランチ名-b オプションの場合、指定したブランチ名が既に存在するとエラーが発生しますが、以下のように大文字 (-B) でのオプション指定を行った場合には、指定のブランチを強制的に上書きし、新規ブランチとして作成し直します。
git checkout -B ブランチ名また、新規作成するブランチ名の後ろに、続けてリモート追跡ブランチ名を記述することで、ブランチの紐付け(上流ブランチの設定)も同時に行うことができます。
// 新規ブランチ「sample」 に リモート追跡ブランチ 「sample」 を紐付け
$ git branch sample origin/sampleこれにより、新規ブランチに対象のリモートブランチの内容を反映させることができます。
なお、既存ブランチの追跡先となる上流ブランチを設定し直したい場合は、以下のコマンドで実行することができます。
git branch -u リモート追跡ブランチ名指定可能なリモート追跡ブランチを確認したい時は、以下のコマンドで一覧表示することが可能です。
git branch -rケースによっては、リモートのブランチ状況と、ローカルにある追跡ブランチの状態にズレが生じる場合があります。
その際は、git fetchコマンドを使用してリモートの状況をローカルに反映させましょう。
git fetch リポジトリ名-f ブランチを強制的に切り替え
ファイル更新などによるエラーが発生した際に、以下の -f オプションを使用することで、強制的にブランチを切り替えることができます。
git checkout -f ブランチ名上記のエラーを解消するためには、変更内容をコミットするなどして保存するか、反対に一旦取り消す必要があるわけですが、内容破棄しても問題ないという場合には、このオプションを付けて実行することで破棄とブランチの切り替えを同時に行うことができます。
コマンドを実行する場合は念の為、git diff(もしくは git diff –cached)コマンドで差分を確認し、破棄して構わない変更内容かどうかを事前にチェックしておくようにしましょう。
まとめ
いかがでしたか?今回は、checkout コマンドの使用方法について解説をしました。
checkout コマンドはブランチを切り替えるだけでなく、様々なブランチ操作を行うことができるコマンドです。
慣れないうちは少々ややこしく感じることもあるかもしれませんので、ぜひこの記事も参考にしながら、実際に使って動作を確認してみてください。
Gitの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、Gitに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!
ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。