概述
当您处理任何具有多个功能的大型项目时,可能会出现这样的情况:您可能在存储库中维护许多分支,并且可能需要在不同的分支上工作以并行执行不同的任务。因此,在存储库中从一个分支转到另一个分支的操作称为分支切换。这种分支切换操作在 git 中也称为检出。在本文中,我们将看到如何在 git 中使用 git switch branch 命令切换到另一个分支,并使用 git 轻松高效地开始开发另一个功能。
先决条件
在了解什么是分支切换以及如何在 git 中的不同分支之间切换之前,我们将了解 git 中的分支到底是什么,以及在存储库中拥有不同分支的需求是什么。
因此,分支是 git 中的一个概念,它允许您偏离主分支并继续以隔离的方式工作,而不会弄乱主分支。在 git 中,每个分支都是任何存储库的一个版本,或者您可以将其称为独立的开发线,任何存储库都可以有尽可能多的分支,每个分支都有不同版本的存储库。
分支在许多方面都很有用,首先,您可以以隔离的方式处理任何特定功能,而不会干扰主分支上的工作,这样也可以促进错误修复的开发,并且错误会更少,因为维护一部分工作比让大型分支拥有所有代码更容易。
分支还有助于维护代码库的稳定性。要在 git 中创建分支,我们可以使用以下命令:
git branch <new_branch_name>
当您想要开发新功能时,可以使用命令 git branch new_branch_name 创建一个与主分支不同的新分支。
如果要显示存储库中的分支总数,可以使用以下命令:
git branch
上面的命令将显示存储库中的所有本地分支,以及当前所在分支名称前面标记的 * 符号。现在,在接下来的章节中,您将看到如何在 git 上切换分支。
如何在 Git 上切换分支?
随着项目中功能的增加,存储库中具有更多分支的需求也随之增加,以便并行处理许多功能。因此,在存储库中的不同分支之间切换和切换称为分支切换或分支签出,主要有两种方法:使用 git checkout 方法和使用 git switch 分支方法。在接下来的章节中,我们将详细介绍使用这两种方法的语法和示例。
1.使用 git checkout 命令
这是在 git 存储库中切换分支的最简单和最常见的方法之一。在此方法中,您可以使用“git checkout”命令并指定要从当前分支切换的目标分支的名称。若要查看当前分支,可以运行以下命令:
git branch
正如我们上面所讨论的,此命令将列出存储库中的所有分支,以及标记在当前分支前面的 * 符号。
要使用“git checkout 分支”,语法为:
git checkout <name_of_the_destination_branch>
此处,name_of_the_destination_branch 是要切换的目标分支的名称。
现在,考虑一下目标分支目前不存在的情况,并且您想创建一个新分支并立即切换到它,那么您可以使用这个 checkout 命令,但有一个小小的变化:
git checkout -b <name_of_the_branch>
在这里,name_of_the_branch 是要创建的目标分支的名称。
您还可以使用 git branch 命令检查您是否已成功切换到目标分支,并且 * 现在应该标记在我们刚刚切换的目标分支前面。
现在,让我们看看如何使用这个 git checkout 方法切换分支的示例。我们有一个测试文件夹,存储库中有 5 个分支,目前,我们在 master 分支上,如下图所示。
现在要切换到 demobranch,您可以使用以下命令:
git checkout demobranch
从上图中,您还可以看到消息“已切换到分支'demobranch'”,您还可以使用 git branch 命令进行验证。
正如你现在看到的,*符号被标记在demobranch上,这意味着我们已经成功切换到demo分支。
现在,考虑您要创建另一个名为 demobranch2 的分支,然后立即切换到该分支的情况,因此有两种方法可以做到这一点,我们上面讨论的一种方法使用相同的 git checkout 命令和 -b 标志。
我们可以看到消息 “switched to a new branch 'demonbranch2'”,我们可以通过以下方式验证这一点:
我们可以看到第 6 个分支 demobranch2 在我们的本地存储库中创建,并且我们已经切换到它。做同样事情的另一种方法是将其分解为两个步骤:首先,使用 git branch <new_branch_name> 命令创建一个新分支,然后使用 git checkout <new_branch_name>切换到新创建的分支。
我们还可以看到这样的例子:
从上图中可以看出,我们在存储库中创建了一个名为 testing_branch 的新分支,但我们仍在 demobranch2 上,因此要切换到测试分支,您可以使用简单的 git checkout 命令。
正如我们所看到的,现在我们正处于testing_branch。
2.使用 git switch 命令
在 git 上的分支之间切换的另一种快速方法是使用 git switch 命令并指定要切换到的分支的目标名称。
要使用 git switch 方法,语法为:
git switch <name_of_the_destination_branch>
此处,name_of_the_destination_branch 是要切换的目标分支的名称。
现在,考虑与我们上面讨论的相同的情况,即目标分支目前不存在,并且您想要创建一个新分支并立即切换到它,您可以将此 switch 命令与附加标志一起使用:
git switch -c <name_of_the_branch>
在这里,name_of_the_branch 是要创建并从当前分支切换的目标分支的名称,-c 是使用的标志。
现在,让我们看看如何使用这个 git switch 方法切换分支的示例。我们有相同的测试文件夹,现在存储库中有 7 个分支,目前,我们在 master 分支上。
现在要切换到 demobranch,我们可以使用以下命令:
git switch demobranch
从上图中,您还可以看到消息“已切换到分支'demobranch'”,您还可以使用 git branch 命令进行验证。
正如你现在所看到的,*符号被标记在demobranch的前面,这意味着我们已经成功切换到demo分支。
现在,考虑我们上面讨论的相同情况,您要创建另一个名为 testing_branch_2 的分支,然后立即切换到该分支,使用相同的 git switch 命令和 -c 标志。
我们可以看到消息“切换到新分支'testing_branch_2'”,我们可以通过以下方式进行验证:
您可以看到在我们的本地存储库中创建了第 8 个分支testing_branch_2并且我们已经成功切换到它。
切换到远程分支
到目前为止,我们一直在研究如何在存储库中的本地分支之间切换,但也可能有一种情况,您可能有兴趣从存储库切换到远程分支。
因此,要检出远程分支,您应该确保使用 git fetch 命令获取您的远程分支。
git fetch
然后,您可以使用普通的 git checkout 命令以及 -t 选项和要切换的分支的名称切换到获取的远程分支。
git checkout -t <*remote_name>/<name_of_branch>*
-t 标志代表“track”,它用于创建分支并自动将上游分支设置为远程分支。
假设您在远程上有一个名为 remote-branch 的分支,源是远程名称。
因此,要签出到远程分支,您需要执行 checkout 命令以及 -t 标志和远程分支的名称。
git checkout -t origin/*remote-branch*
输出如下图所示:
结论
- 分支是 git 中的一个概念,它允许您偏离主分支并继续以隔离的方式工作,而不会弄乱主分支。
- 每个分支都是任何存储库的一个版本,或者您可以将其称为独立的开发线,任何存储库都可以有尽可能多的分支,每个分支都有不同版本的存储库。
- 在存储库中从一个分支转到另一个分支的操作称为分支切换。此操作在 Git 中也称为“签出”。
- git branch <new_branch_name> 命令用于在本地存储库中创建新分支。
- git branch 命令用于列出存储库中的所有分支,以及当前分支前面标记的 * 符号。
- git checkout <name_of_the_destination_branch> 命令用于检出或切换到目标分支。
- git checkout -b <name_of_the_branch> 当目标分支不存在并且您想创建一个新分支并立即切换到它时使用,那么您可以使用此 checkout 命令。
- git switch <name_of_the_destination_branch> 命令类似于 git checkout 命令,用于切换到目标分支。
- git switch -c <name_of_the_branch> 命令的工作方式与我们在 git checkout 命令中讨论的类似,以及 git switch branch 命令的 -b 标志。它用于立即创建一个新分支并切换到它。
- 要切换到远程分支,您需要首先使用 git fetch 命令获取远程分支。
- 获取分支后,可以使用 git checkout -t <remote_name>/<name_of_branch> 命令切换到它。它将跟踪并创建您的分支,然后自动将上游分支设置为远程分支。
版权归原作者 新华 所有, 如有侵权,请联系我们删除。