1. ホーム
  2. 記事一覧
  3. git checkout と git switch それぞれの使い方を比較する

2024.02.26

git checkout と git switch それぞれの使い方を比較する

  • PC操作

はじめに

Gitのブランチ操作は、checkoutコマンドを使用して行われてきました。しかし、Gitのバージョン2.23.0で新たに導入されたswitchコマンドを使用すると、ブランチ操作をより直感的で明確に行うことができます。

switchコマンドはブランチの切り替えや新しいブランチの作成に特化しています。一方で、checkoutコマンドはブランチの切り替えに加えて、作業ディレクトリのファイルの変更や復元にも使用されます。

この記事では、switchコマンドの基本的な使い方と機能を紹介します。また、checkoutコマンドとの比較を行い、両者の違いとそれぞれのコマンドが適した使用状況について解説します。最後に、switchコマンドを使った実践的な使用例を提供します。

gitとGitHubについてはこちらで解説しています。

https://envader.plus/article/68

Git switch コマンドの基本

Gitのswitchコマンドは、ブランチ間の移動をより直感的で簡単にするために設計されました。こちらでは、switchコマンドの基本的な使い方と機能について解説します。

ブランチの切り替え

switchコマンドの最も基本的な使用法は、既存のブランチ間での移動です。コマンドは以下のように使用されます。

git switch <ブランチ名>

このようにして指定されたブランチに切り替えることができます。例えば、developブランチに移動したい場合は、以下のように入力します。

git switch develop

新しいブランチの作成と切り替え

switchコマンドを使用すると、新しいブランチを作成し、そのブランチに直接切り替えることができます。-cオプションを使用して、以下のように実行します。

git switch -c <新しいブランチ名>

例えば、feature/new-featureという新しいブランチを作成する場合、以下のコマンドを入力します。

git switch -c feature/new-feature

追跡ブランチの切り替え

リモートリポジトリのブランチを追跡する新しいローカルブランチを作成する場合にもswitchコマンドが役立ちます。--trackオプションを使って、リモートのブランチと同じ名前の新しいローカルブランチを作成し、切り替えます。

git switch --track origin/<ブランチ名>

例えば、リモートリポジトリのmainブランチを追跡するためには、以下のようにします。

git switch --track origin/main

git checkoutコマンドとの比較

Gitのswitchコマンドは、checkoutコマンドの機能の一部をより使いやすくするために導入されました。こちらでは、switchcheckoutの主な機能の違いと、それぞれのコマンドが最適な使用状況について説明します。

git switchが導入された背景

これまでは、Gitではブランチの切り替えや新しいブランチの作成などの操作はcheckoutコマンドを使用して行われていました。しかし、checkoutはブランチ操作の他にも、作業ディレクトリの変更やファイルの復元など多岐にわたる機能を持っていました。つまり多機能が故に、特に新しいユーザーにとっては混乱の原因となりがちでした。

switchとrestoreへの分割

git checkoutの多機能すぎるという問題に対処するため、Gitの開発者はcheckoutコマンドを2つの専用コマンドに分割しました。

  • git switch

    この新しいコマンドはブランチの切り替えに特化しています。switchは、現在のブランチから別のブランチに移動する操作を、より明確かつ直感的に行うことができます。

  • git restore

    作業ディレクトリやステージングエリア(インデックス)のファイルの状態を変更するためのコマンドです。これにより、コミットされていない変更を元に戻したり、過去のコミットから特定のファイルを復元するような操作が行えます。

結局switchでいいの?

結論として、Gitのswitchコマンドは、特にブランチ操作に関しては、より使いやすく直感的な選択となるでしょう。しかし、switchコマンドがすべてのケースでcheckoutコマンドを完全に置き換えるわけではありません。次に説明する機能の違いなどを理解して使い分けましょう。

switchとcheckoutの機能の違い

機能switchcheckout
ブランチの切り替え
新しいブランチの作成
作業ディレクトリの変更
ファイルの状態の復元

使い分けのポイント

目的使用するコマンド
ブランチの切り替えや新規作成switch
特定のコミットやブランチの状態に作業ディレクトリを戻すcheckout

switchのメリットとデメリット

  • メリット

    • ブランチ操作がシンプルでわかりやすい
  • デメリット

    • 作業ディレクトリの変更やファイルの復元ができない

checkoutのメリットとデメリット

  • メリット

    • ブランチ操作に加えて、作業ディレクトリの変更やファイルの復元など、多彩な機能を利用できる
  • デメリット

    • ブランチ操作が複雑になる可能性がある

実践的な使用例

効率的なブランチ間の作業

  • フィーチャーブランチの素早い切り替え

    新しい機能を開発する際、git switch -c feature/<feature-name>を使って新しいフィーチャーブランチを作成し、すぐに作業を開始できます。これと似た操作をcheckoutコマンドで行う場合はgit checkout -b feature/<feature-name>となりますが、switchコマンドの方がブランチの作成と切り替えの意図がより明確です。

  • 使用の簡潔さ

    switchコマンドは新しいブランチ操作に特化しているため、同じ操作をより直感的に行うことができます。checkoutコマンドはより汎用的ですが、そのために複数の機能を覚える必要があります。

コマンドのショートカットと組み合わせ

  • エイリアスの利用

    よく使用するswitchコマンドにエイリアスを設定することで、コマンドの入力を簡略化できます。例えば、git config --global alias.sw switchを実行すると、git swでswitchコマンドを呼び出せるようになります。

  • 他のGitコマンドとの組み合わせ

    switchコマンドは、git mergegit rebaseなどの他のGitコマンドと組み合わせて使用することで、ブランチの統合やリベース作業を効率的に行うことができます。

まとめ

Gitのswitchコマンドは、ブランチの切り替えや新しいブランチの作成に特化したコマンドです。checkoutコマンドとの違いを理解して、適切なコマンドを選択することで、Gitを使ったバージョン管理をより効率的かつ効果的に行うことができます。

基本的な使い方

# 既存のブランチに切り替える
git switch <ブランチ名>
# 新しいブランチを作成し、そのブランチに切り替える
git switch -c <新しいブランチ名>

checkoutとの違い

  • switchコマンドは、ブランチの切り替えや新しいブランチの作成に特化している。
  • checkoutコマンドは、ブランチの切り替えや新しいブランチの作成に加えて、作業ディレクトリのファイル変更などの複数の機能を持ち、より汎用的である。

実践的な使用例

効率的なブランチ間の作業: git switchコマンドとgit mergeコマンドを組み合わせて使用することで、ブランチの統合をよりスムーズに行うことができる。

以上を踏まえ、git checkoutからgit switchを使うように切り替えてはいかがでしょうか?

エンベーダー編集部

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

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

関連記事