このページは、git checkout
コマンドの調査です。使用例とエッジケースについて説明します。 Gitの用語では、「チェックアウト」とは、ターゲットエンティティの異なるバージョンを切り替える行為です。 git checkout
コマンドは、ファイル、コミット、ブランチの3つの異なるエンティティに対して機能します。 「チェックアウト」の定義に加えて、「チェックアウト」というフレーズは、git checkout
コマンドを実行する行為を意味するために一般的に使用されます。 「変更の取り消し」トピックでは、git checkout
を使用して古いコミットを表示する方法を説明しました。このドキュメントの大部分の焦点は、ブランチのチェックアウト操作です。
ブランチのチェックアウトは、選択したブランチ/リビジョンに一致するように作業ディレクトリが更新されるという点で、古いコミットとファイルのチェックアウトに似ています。ただし、新しい変更はプロジェクト履歴に保存されます。つまり、読み取り専用の操作ではありません。
ブランチのチェックアウト
git checkout
コマンドを使用すると、git branch
によって作成されたブランチ間を移動できます。ブランチをチェックアウトすると、作業ディレクトリ内のファイルがそのブランチに保存されているバージョンと一致するように更新され、Gitにそのブランチでのすべての新しいコミットを記録するように指示されます。作業している開発ラインを選択する方法と考えてください。
新機能ごとに専用のブランチを持つことは、従来のSVNワークフローからの劇的な変化です。これにより、既存の機能を破壊することを恐れずに、途方もなく簡単に新しい実験を試すことができ、関連のない多くの機能を同時に操作することができます。さらに、ブランチはいくつかの共同ワークフローも容易にします。
git checkout
コマンドはgit clone
と混同されることがあります。 2つのコマンドの違いは、クローンがリモートリポジトリからコードをフェッチするように機能するか、チェックアウトがローカルシステムにすでに存在するコードのバージョンを切り替えるように機能することです。
使用法:既存のブランチ
作業中のリポジトリに既存のブランチが含まれていると仮定すると、git checkout
を使用してこれらのブランチを切り替えることができます。使用可能なブランチと現在のブランチ名を確認するには、 git branch
を実行します。
上記の例は、
コマンドを実行し、指定したブランチ(この場合はfeature_inprogress_branch
)に切り替えます。
新しいブランチ
Git checkout
はgit branch
と連携して機能します。git branch
コマンドは次のことができます。新しいブランチを作成するために使用されます。新しい機能を開始する場合は、 git branch new_branch
を使用します。作成したら、git checkout new_branch
を使用してそのブランチに切り替えることができます。さらに、git checkout
コマンドは-b
引数を受け入れます。この引数は、新しいブランチを作成してすぐに切り替える便利なメソッドとして機能します。 git checkout
を使用して機能を切り替えることで、1つのリポジトリで複数の機能を操作できます。
上記の例の作成とチェックアウトを同時に行います。
-b
オプションは、git checkout
を実行する前にgit branch
を実行するようにGitに指示する便利なフラグです。
デフォルトではgit checkout -b
はnew-branch
をベースにします現在のHEAD
。オプションの追加の分岐パラメータをgit checkout
に渡すことができます。上記の例では、が渡され、
existing-branch
ではなくnew-branch
がベースになります。現在のHEAD
。
ブランチの切り替え
ブランチの切り替えは簡単な操作です。以下を実行すると、HEAD
が.
<の先端を指します。 p> Gitは、reflogでチェックアウト操作の履歴を追跡します。 git reflog
を実行して履歴を表示できます。
リモートブランチのGitチェックアウト
チームと共同作業する場合、リモートを利用するのが一般的です。リポジトリ。これらのリポジトリは、ホストされて共有されている場合もあれば、別の同僚のローカルコピーである場合もあります。各リモートリポジトリには、独自のブランチセットが含まれます。リモートブランチをチェックアウトするには、最初にブランチのコンテンツをフェッチする必要があります。
Gitの最新バージョンでは、ローカルブランチのようにリモートブランチをチェックアウトできます。
古いバージョンのGitでは、remote
に基づいて新しいブランチを作成する必要があります。
さらに、新しいローカルブランチをチェックアウトして、最後にコミットしたリモートブランチにリセットできます。
デタッチされたHEADS
ブランチでのgit checkout
の3つの主な使用法を確認したので、
状態。HEAD
はGitが現在のスナップショットを参照する方法であることを忘れないでください。内部的には、git checkout
コマンドは、指定されたブランチまたはコミットのいずれかを指すようにHEAD
を更新するだけです。ブランチを指す場合、Gitは文句を言いませんが、コミットをチェックアウトすると、 "detached HEAD”
状態に切り替わります。
これは、実行しているすべてがプロジェクトの他の開発から「切り離されている」ことを通知する警告です。切り離されたHEAD
状態で機能の開発を開始した場合、tに戻ることができるブランチはありません。 oそれ。必然的に別のブランチをチェックアウトする場合(たとえば、機能をマージする場合)、機能を参照する方法はありません。
要点は、開発は常にブランチで行う必要があります。切り離されたHEAD
では行わないでください。これにより、新しいコミットへの参照が常にあるようになります。ただし、古いコミットを見ているだけの場合は、分離されたHEAD
状態にあるかどうかは実際には問題ではありません。
まとめ
このページでは、ブランチを変更する際のgit checkout
コマンドの使用法に焦点を当てました。要約すると、git checkout
をブランチで使用すると、HEAD
参照のターゲットが変更されます。ブランチの作成、ブランチの切り替え、リモートブランチのチェックアウトに使用できます。 git checkout
コマンドは、標準のGit操作に不可欠なツールです。 git merge
に相当します。 git checkout
およびgit merge
コマンドは、git workflows
を有効にするための重要なツールです。