Gitリモートブランチの簡単なチェックアウト手順[ステップバイステップ]

リモートブランチのチェックアウト方法についてのガイドです。リモートGitリポジトリからコードを取得するプロセスについて詳しく説明します。

Not a reader? Explore this related video tutorial!

Not seeing the video? Ensure your ad blocker is disabled.

前提条件

  • このチュートリアルでは、Windows 10でバージョン2.30のGit SCM(ソースコード管理)を使用していますが、Gitがサポートする任意のOSで互換性があります。

Windows向けの他のインストール方法には、ChocolateyGit4Winがあります。

リモートブランチの理解

Gitリポジトリは、ブランチ内の関連するコミットのシーケンスを記録・追跡します。デフォルトでは、コミットは現在アクティブなブランチに存在し、通常はmainまたはmasterと呼ばれます。

A remote branch is a branch located in a remote Git repository. These remote repositories, termed as “remotes,” are the destinations your local Git repository will scout for external commit updates once set up.

Gitのbranchコマンドを使用して利用可能なブランチを確認します。アスタリスク(*)でマークされたブランチがアクティブなものです。以下にリストされているブランチは、リモートブランチがまだフェッチされていないため、完全にローカルのものです。

git branch
List of local branches shown from the git branch command.

Gitのチェックアウトリモートブランチのマスタリング

ローカルのGitリポジトリがあり、他の開発者と協力する必要が生じた場合、Gitのcheckoutコマンドが役立ちます。このコマンドを使用すると、リモートGitリポジトリのリモートブランチから最新のコミットをフェッチすることができます。

リモートブランチが設定されると、ローカル専用のブランチではなくリモートブランチがミラーされます。以下はgit checkout remote <branch>コマンドの例です。

git checkout remote main

リモートGitリポジトリのクローン

既存のリポジトリが利用可能になったので、それに潜り込む時が来ました。以下の手順に従って、リモートリポジトリをローカルのフォルダにクローンします。

1. 証明書とファイアウォールの問題を回避するため、リモートリポジトリをHTTPSのURL経由でクローンする方が簡単です。

  • GitHub上のリポジトリに移動します。
  • Codeボタンをクリックし、HTTPSを選択します。
  • リンクの隣にあるClipboardアイコンをクリックしてURLをクリップボードにコピーします。
Locating the HTTPS clone URL in GitHub.

2. HTTPS URLをクリップボードにコピーした後、WindowsコマンドプロンプトやWindows Terminalなど好きなCLIを使用してコマンドラインインターフェースを開きます。

3. クローンしたリポジトリを保存したいフォルダに移動します。このチュートリアルでは、スクリーンショットに示されているようにホームディレクトリのgitフォルダが使用されます。以下のコマンドを実行して、リモートリポジトリを含むサブフォルダを作成します。

# GitHub git clone https://github.com/Adam-the-Automator/git-checkout-remote-branch
Cloning a remote repository to the local machine.

4. コマンドcd git-checkout-remote-branchを使用して、クローンしたリポジトリに移動します。

以下のステータスコマンドを実行して、リポジトリが正常にクローンされたか確認します。Gitのstatusコマンドは、ローカルブランチとリモートブランチの違いを明らかにし、ブランチが接続されているかどうか、更新されているかどうかを判断するのに役立ちます!デフォルトのGitリモートはoriginと呼ばれ、mainリモートブランチに接頭辞が付けられます。git status

git status
Checking a repositories status.

ほとんどの現代のGitソフトウェアでは、mainがデフォルトの主ブランチです。古いアプリケーションでは、デフォルトのブランチ名としてmasterを使用している場合もありますが、両方の名前は機能的には同じです。このチュートリアルでは、mainRemoteBranchSomeBranchAnotherBranchという名前のブランチを使用しています。

Gitリモートとリモートブランチのトラッキングとは何か

リポジトリをクローンすると、リモートソースへの参照、つまりリモートが自動的に作成されます。この参照は、新しいコミットのチェックやリモートリポジトリへの新しい変更のプッシュに使用されます。

A Git repository itself may have multiple remotes, but a branch can only reference a single remote.

リモートブランチのトラッキングは、ローカルブランチとの関係を確立します。この関係により、リモートブランチからローカルブランチにコミットを簡単にプッシュまたはプルすることができます。さらに、トラッキングされたブランチは、ローカルブランチがリモートからどれだけ進んでいるか、または遅れているかを示します。

Gitリポジトリのリモートの一覧表示

まず、作業しているリポジトリにGitリモートがあることを確認してください。以下に示すように、git remoteコマンドでリポジトリのGitリモートを表示します。この例では、originremote2の2つのリモートが表示されています。

git remote
Viewing a repositories two configured remotes.

2つの追加のトラッキングされたリモートリポジトリの名前は、originremote2です。リモートは異なる場合があります。

設定されたリモートについての詳細を把握するには、v スイッチを追加して完全なGitリモートURIを表示します。

git remote -v
Viewing verbose details about repo remotes.

なぜfetchpushのために別々のURIがあるのか疑問に思うかもしれません。一部のGitワークフローでは、リポジトリの更新をチェックするURIと、変更を送信するURIが異なる場合があります。これを三角形ワークフローと呼びます。

利用可能なリモートブランチの表示

リポジトリ内のすべての利用可能なローカルおよびリモートブランチをbranchコマンドで表示します。リモートブランチも表示するには、以下のようにallスイッチを追加します。

git branch --all

以下の画像では、このチュートリアルで使用されているリモートリポジトリoriginが予想どおり表示されています。ただし、この画像にはRemote2という名前のリモートからのすべてのブランチが含まれていません。

Viewing all known branches in a repo (including remotes).

リモートのブランチがブランチリストに表示されていない場合は、次のセクションで説明するように、利用可能なリモートブランチのリストを更新する必要があります。

利用可能なリモートブランチの更新

時には、リモートリポジトリにブランチが追加または変更されることがあります。最新のブランチを使用していることを確認するには、git fetchコマンドを実行する必要があります。

fetchコマンドは、リモートリポジトリに接続し、利用可能なすべてのブランチのリストを取得します。 git fetchコマンドを実行した後、現在追跡しているブランチを表示して、リモートブランチが表示されることを確認できます。

# 利用可能なリモートブランチを取得
git fetch

# ローカルGitリポジトリですべてのブランチが利用可能であることを確認
git branch --all

以下の例では、ブランチremotes/origin/RemoteBranchgit fetchコマンドを実行した後に利用可能なリモートブランチのリストに表示されます。

Using git fetch to update the list of available remote branches.

fetchコマンドは、現在のブランチで追跡しているリモートからの更新のみをチェックします。リポジトリ内のすべてのリモートからの更新をチェックするには、allパラメータを追加します。

git fetch --all

特定のリモートから利用可能なブランチをフェッチするには、git fetchコマンドにリモート名を含めます。以下の例では、Remote2を使用してブランチmainを取得します。

# ローカルGitリポジトリで利用可能なブランチをリストアップ
git branch --all
# リモート2から利用可能なブランチをフェッチ
git fetch Remote2
# リモート2のブランチであるmainが利用可能であることを確認
git branch --all
Fetching main from remote2 with the git fetch command.

リモートの更新を確認するたびに、git fetchgit pull、またはgit pushを使用すると、Gitはコミットをリモートブランチと比較します。ローカルブランチは任意のGitリモートブランチをトラッキングすることができます。さらに、複数のローカルブランチが同じリモートブランチをトラッキングするように設定できます。

各ブランチのリモートトラッキングの表示

コマンドgit branchvvパラメータを使用して、トラッキングされているリモートブランチを対応するローカルブランチと一緒に表示します。以下のような形式で、リモートとブランチのリストが表示されます。[<リモート>/<ブランチ>]

git branch -vv
Listing remote tracking of all local branches.

ブランチのリモートトラッキングの変更

ローカルブランチを別のリモートブランチに変更する必要がある場合は、uパラメータを使用して現在のブランチを特定のリモートブランチに設定します。以下の例を参考にしてください。

git branch -u Remote2/main
Setting what remote to track for the current branch.

Gitリモートブランチのチェックアウト

リモートGitリポジトリで作成された新しいブランチをチェックアウトする場合、checkoutコマンドを使用します。

以下の条件が満たされている場合、Gitは自動的に適切なリモートを決定し、リモートブランチのローカルコピーをダウンロードし、ローカルコピーをリモートブランチに対してトラッキングするように設定します。以下の条件が満たされていないかを、git branch --allコマンドの結果を通じて確認してください。

  • A local branch with the same name does not already exist.
  • 同じリモートブランチ名を使用する複数のリモートが存在しないこと。

リモートブランチをgit checkoutする操作を行うには、以下に示すようにgit checkoutコマンドを使用し、リモートブランチの名前を入力してください。

git checkout RemoteBranch
Creating a local branch from a remote branch with git checkout.

既に同じ名前のローカルブランチがローカルリポジトリに存在する場合、リモートブランチをcheckoutする前に代替のローカルブランチ名を指定するためにbパラメータを追加してください。

git checkout -b AnotherBranch origin/RemoteBranch
Creating a local copy of a remote branch with an alternate local branch name.

ローカルリポジトリに同じブランチ名を持つ複数のリモートがある場合は、どのリモートとブランチをローカルのコミットに対してトラッキングするかを指定してください。

git checkout --track origin/RemoteBranch
Creating a local copy of a remote branch with tracking enabled.

将来のバージョンのGitでは、ブランチの変更や作成にはgit switchコマンドを使用することが推奨される可能性があります。Gitのswitchコマンドはブランチ専用であり、Gitのcheckoutコマンドにはさまざまな機能があります。Irshad S.はその理由について詳しく説明しています。詳細については、興味があれば読んでみてください。

ローカルブランチをリモートにプッシュする

対応するリモートブランチを持たないローカルブランチを作成した場合、git pushコマンドを使用してブランチをリモートに送信することができます。新しいブランチをお好みのリモートに確立する最も簡単な方法は、uパラメータを使用することです。

以前に使用したように、uパラメータはリポジトリ名とソースブランチの引数を必要とします。ソースブランチ名にHEADだけを指定することで、Gitは現在のローカルブランチ名をリモートの名前として使用することができます。この場合、NewBranchです。

# NewBranchにチェックアウトして切り替える
git checkout -b NewBranch
# originリモートにNewBranchを作成する
git push -u origin HEAD
# リモート上のブランチが存在することを確認する
git branch -vv
Pushing a local branch to an upstream remote named origin with the same name as local.

HEADは現在のブランチを指すショートカットです。他のブランチをリモートにプッシュしてトラッキングを確立するには、HEADの代わりにブランチ名を使用します。

時々、現在のローカルブランチの名前がリモートブランチの名前と一致しない場合があります。異なる名前を使用する場合は、ソースの後にコロンで接続した希望のブランチ名を指定します。

# 現在のブランチをAnotherBranchとしてoriginリモートに作成する
git push -u origin HEAD:AnotherBranch
# ローカルのNewBranchがoriginリモート上のAnotherBranchとして存在することを確認する
git branch -vv
Pushing a local branch to an upstream remote named origin with an alternate remote branch name.

次のステップと追加のGitリソース

Git、リモートの管理、およびgit checkoutリモートブランチの手順を確認した後、将来のストレスを回避するのに役立つ非常に重要な知識を備えています。 Gitでリモートブランチをチェックアウトする手順と共有されたベストプラクティスは、今後非常に貴重なリソースとなるでしょう。

Gitリポジトリの他の側面についてさらに深く掘り下げたい場合は、次のリソースが強くお勧めです:

  • A primer on detached heads: Discover scenarios where a detached HEAD is beneficial or inadvertent, and how to handle it.
  • Gitスイッチ:複数の側面を持つGitのcheckoutとは異なり、ブランチに対応するコマンドです。

Source:
https://adamtheautomator.com/git-checkout-remote-branch/