轻松执行Git远程分支检出【逐步指南】

你是一个新加入团队的成员,被指示从Git代码仓库中检出一个远程分支吗?无论是作为庞大企业的一部分还是一个紧凑的团队,掌握远程Git分支对于无缝的代码协作至关重要。在这个指南中,深入了解从远程Git仓库检索代码的过程,重点关注 ‘git checkout remote branch’ 命令。

Not a reader? Explore this related video tutorial!

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

先决条件

  • 本教程使用Windows 10上的Git SCM(源代码管理)版本2.30,尽管它与任何支持Git的操作系统兼容。

Windows的其他潜在安装方法包括ChocolateyGit4Win

了解远程分支

Git仓库记录并跟踪分支中一系列相关的提交。默认情况下,提交驻留在当前活动的分支中,通常被称为mainmaster

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 将镜像远程分支而不是仅本地分支。下面是一个命令的示例 git checkout remote <branch>

git checkout remote main

克隆远程 Git 仓库

现在您已经可以使用现有的仓库了,是时候开始了。按照以下步骤将远程仓库克隆到您机器上的本地文件夹中。

1. 通常更简单的方式是通过 HTTPS URL 来克隆远程仓库,而不是使用 SSH 来避开证书和防火墙问题。

  • 前往 GitHub 上的仓库。
  • 点击 Code 按钮并选择 HTTPS
  • 点击链接旁边的 Clipboard 图标来复制链接到剪贴板。
Locating the HTTPS clone URL in GitHub.

2. 复制HTTPS URL到剪贴板后,使用你喜好的命令行界面,如Windows命令提示符或Windows终端,打开一个命令行界面。

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远程仓库,如下所示。在此示例中,显示了两个远程仓库,分别是 originremote2

git remote
Viewing a repositories two configured remotes.

两个额外被跟踪的远程存储库分别命名为 originremote2,您的远程可能会有所不同。

为了获取有关配置的远程仓库的更多详细信息,请添加v开关以显示完整的Git远程URI。

git remote -v
Viewing verbose details about repo remotes.

您可能想知道为什么fetchpush有单独的URI。一些Git工作流程允许您在与发送更改的位置不同的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/RemoteBranch现在在执行git fetch命令后可见于可用的远程分支列表中。

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

fetch命令仅检查当前分支中跟踪的远程的更新。要让 Git 从存储库中的所有远程检查更新,而不管跟踪状态如何,请添加all参数。

git fetch --all

要从特定远程检索可用分支,请在git fetch命令中包含远程名称,如下例所示,其中检索分支main的示例为Remote2

# 列出本地 Git 存储库中可用的分支
git branch --all
# 从remote2获取可用的分支
git fetch Remote2
# 确认现在可用的 remote2 分支 main
git branch --all
Fetching main from remote2 with the git fetch command.

每当您使用git fetchgit pullgit push检查远程更新时,Git会将提交与远程分支进行比较。本地分支可以跟踪任何Git远程分支。此外,多个本地分支可以设置为跟踪同一个远程分支。

查看每个分支的远程跟踪

要查看受跟踪的远程分支以及相应的本地分支,可以在git branch命令中使用vv参数。命令结果以[<remote>/<branch>]格式显示远程和分支列表,如下所示。

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仓库上创建新分支后,可能需要执行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.

如果本地仓库已包含同名本地分支,请在要检出的远程分支之前添加 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 来将其他分支推送到远程并建立跟踪。

有时,当前本地分支的名称与远程分支的名称不匹配。为了使用不同的名称,请在源后面指定所需的分支名称,并用冒号连接,如下所示。

# 在 origin 远程上将当前分支创建为 AnotherBranch
git push -u origin HEAD:AnotherBranch
# 验证本地 NewBranch 现在作为 AnotherBranch 存在于 origin 远程
git branch -vv
Pushing a local branch to an upstream remote named origin with an alternate remote branch name.

接下来的步骤和其他 Git 资源

了解了Git的基础知识,管理远程仓库,并执行git checkout remote branch后,您现在掌握了丰富的知识,将有助于避免将来的挫折。在Git中检出远程分支的步骤和分享的最佳实践将成为今后无价的资源。

如果您希望深入了解Git仓库管理的其他方面,强烈推荐以下资源:

  • A primer on detached heads: Discover scenarios where a detached HEAD is beneficial or inadvertent, and how to handle it.
  • Git switch:一个专门用于处理分支的命令,不同于多功能的Git checkout

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