如何检出远程 Git 分支

已发表: 2023-01-23
显示 bash 提示符的 Linux 笔记本电脑
fatmawati achmad zaenuri/Shutterstock.com
要从远程存储库签出分支,请使用“git fetch”命令,然后使用“git branch -r”列出远程分支。 选择您需要的分支并使用“git checkout -b new-branch-name origin/remote-branch-name”形式的命令。 如果您使用多个存储库,请将 checkout 命令的“origin”部分更改为您希望从中检出分支的远程名称。

如果您的开发团队使用 Git,您最终将需要从远程存储库中检出其他人的工作作为一个分支。 与 Git 中的大多数分支操作一样,切换到远程分支实际上非常简单。

目录

Git、分支和远程
寻找您当地的分支机构
签出远程分支
处理名称冲突
处理多个远程存储库
结帐前

Git、分支和远程

Git 的理念是经常分支。 分支允许在不改变主代码库的情况下进行开发。 当您对新的、经过测试的代码准备就绪感到满意时,您可以将新分支合并到另一个分支中。 通常,这是主分支或主分支,但您可以合并任意两个分支。

由于这种灵活性,以及​​ Git 处理分支和合并的轻量级和快速方式,分支发生了变化。 在旧版本控制系统中,分支是一件大事。 分支和合并很慢而且容易出错。 Git 为开发人员提供了简单、快速的分支,用于支持许多不同的工作流程。

如果您作为使用 Git 的开发团队的一员工作或自愿参加,您将拥有一个“中央”Git 存储库,该存储库远离每个软件工程师的计算机。 这称为远程存储库,或简称为“远程”。 这是执行推送时发送到本地存储库的提交和更改的位置。

当然,这也是其他开发人员正在做的事情。 这使得协作变得容易。 如果您需要访问其他开发人员的工作,您只需从远程存储库的分支中检索他们的代码。 如果他们需要访问您的工作,他们将从跟踪您的本地分支之一的存储库中的分支检索您的代码。

在 Git 中,一个开发项目可以有多个远程。 但是,本地分支只能跟踪单个远程分支。 因此,只要您使用适当的遥控器,检查具有多个遥控器的远程分支与使用单个遥控器是一样的。

寻找您当地的分支机构

您需要避免名称冲突。 如果您有一个本地分支恰好与您要检出的远程分支同名,您有两种选择。 您可以重命名本地分支并检出远程分支。 这样,跟踪远程分支的本地分支与远程分支具有相同的名称。 或者,您可以签出远程分支并告诉 Git 使用新名称创建本地跟踪分支。

要找出本地存储库中分支的名称,请使用git branch命令。

 分支

使用 git branch 命令列出本地分支

这个本地存储库有一个 master 分支和三个其他分支。 星号表示哪个是当前分支。 从一个分支移动到另一个分支需要签出您要使用的分支。

 git checkout 新功能
混帐状态

使用 git checkout 命令检出本地分支

第一个命令为我们更改了分支,因此“new-feature”是当前分支。 git status命令为我们验证了这一点。

我们可以在分支之间来回跳转,提交新更改,从远程拉取更新,并将本地更新推送到远程。

相关:如何更新和维护单独的 Git 分支

签出远程分支

远程存储库中有一个分支在我们的机器上不存在。 一位名叫 Mary 的开发人员创建了一项新功能。 我们想切换到那个远程分支,这样我们就可以在本地构建那个版本的软件。

如果我们执行fetch ,Git 将从远程存储库中拉回元数据。

 git 获取

使用 git fetch 命令检索有关远程存储库的元数据

因为这是自 Mary 将她的分支推送到远程存储库以来我们完成的第一次fetch ,我们被告知有一个名为“origin/mary-feature”的新分支。 添加到项目的第一个远程存储库的默认名称是“origin”。

无论我们是否看到此消息,我们总是可以要求 Git 列出远程存储库中的分支。

-r (远程)选项告诉 Git 报告远程存储库上的分支。

 git 分支 -r 

使用 git branch -r 命令列出远程分支

这里要注意的一点是 Git 正在检查远程元数据的本地副本。 这就是为什么我们使用git fetch命令来确保元数据的本地副本是最新的。

如何选择适合您团队的 Git 工作流和分支模型
相关如何选择适合您团队的 Git 工作流和分支模型

一旦我们找到了我们想要的分支,我们就可以继续检查它了。 我们使用带有-b (分支)选项的git checkout命令,后跟我们将用于本地分支的名称,然后是远程分支的名称。

 git checkout -b mary-feature origin/mary-feature 

使用 git checkout -b 命令检出远程分支

我们可以看到我们已经签出远程分支并创建了一个本地分支来跟踪远程分支中的更改。

 分支

使用 git branch 命令列出本地分支,并选择远程分支的新创建副本作为当前分支

我们新的本地分支机构现在是我们当前的工作分支机构。

处理名称冲突

如果您有一个与远程分支同名的本地分支,您可以在签出远程分支之前重命名本地分支,或者签出远程分支并指定不同的本地分支名称。

要将远程分支检出到一个不同名称的本地分支,我们可以使用与之前相同的命令,并选择一个新的本地分支名称。

 git checkout -b mary-test origin/mary-feature 

使用 git checkout -b 命令检出远程分支,本地分支与远程分支具有不同的名称

这将创建一个名为“mary-test”的本地分支,它将跟踪对该分支的本地提交。 推送将转到远程“origin/mary-feature”分支。

这可能是处理本地名称冲突的最佳方式。 如果你真的想保持本地和远程分支的名称相同,你需要在签出远程之前重命名你的本地分支。 在 Git 中重命名分支是微不足道的。

 git branch -m mary-feature 老玛丽分支

使用 git branch -m 命令重命名分支

您现在可以检查远程“origin/mary-feature”分支了。

处理多个远程存储库

如果您配置了多个远程存储库,则在签出远程分支时需要注意使用适当的存储库。

要列出您的远程存储库,请使用带有-v (查看)选项的remote命令。

 git远程-v 

使用 git remote -v 命令列出远程仓库

要查看所有可用分支,我们需要从所有远程获取元数据,然后列出远程分支。

 git fetch --all
 git 分支 --all 

使用 git fetch --all 更新本地元数据并使用 git branch --all 列出本地和远程的所有分支

我们可以看到我们想要的分支在“origin”远程。 检查它的命令与我们已经使用过的格式相同。 我们需要指定远程名称“origin”以及分支名称“mary-feature”。

 git checkout -b mary-feature origin/mary-feature 

使用 git checkout -b 命令检出远程分支,使用远程名称和分支名称

相关:如何切换、添加和删除 Git 遥控器

结帐前

在您结账之前,请记住一些事情,您会没事的。

确保避免名称冲突。 如果您有一个与远程分支同名的本地分支,请决定是重命名本地分支还是创建一个具有不同名称的分支来跟踪远程分支。

如果您使用多个远程存储库,请确保使用正确的远程存储库。

相关: Git rebase:你需要知道的一切