网站搜索

如何检出远程 Git 分支


摘要:要从远程存储库签出分支,请使用 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 branch 命令。

git branch

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

git checkout new-feature
git status

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

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

签出远程分支

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

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

git fetch

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

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

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

git branch -r

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

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

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

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

git branch

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

处理名称冲突

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

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

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

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

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

git branch -m mary-feature old-mary-branch

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

处理多个远程存储库

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

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

git remote -v

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

git fetch --all
git branch --all

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

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

结帐前

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

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

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