分支是 Git 中一项至关重要的功能。它允许您在不干扰主代码库的情况下,独立处理特定的功能或软件模块。
作为开发者,您有能力对源代码进行重大修改,并决定如何处理这些改动。您可以选择将修改合并回主项目,或将其完全放弃。
如果您之前使用过 Git,可能会注意到创建分支的方式多种多样。对于初学者,掌握版本控制工具的使用能极大地节省开发时间。否则,您的开发过程可能会充满挑战。
本文旨在帮助您在既定的工作流程中顺利创建 Git 分支。学习后,您将掌握维护 GitHub 代码仓库的坚实技能。
请注意:如果您是新手开发者,在继续之前请先了解如何设置您的 GitHub 账户。如果您已完成此步骤,可直接进入操作指南部分。不过,回顾一下总是能加深理解。
什么是 Git 分支?
资料来源:atlassian.com
Git 中的分支意味着您仓库的版本与主项目有所不同(这在现代版本控制系统中很常见)。简单来说,它让您在不影响主开发线的情况下进行新的开发尝试。
许多版本控制系统 (VCS) 工具都采用这种技术,即创建源代码目录的新副本。处理大型项目时,复制源代码可能需要一段时间。好处是,这给了您尝试修改代码的机会。
Git 的分支模型被认为是其“杀手级功能”,使其在众多版本控制工具中脱颖而出。Git 的操作模式简洁,分支操作几乎是即时的,并且可以在多个分支之间轻松切换。如果您掌握了 Git 分支模型,您将解锁强大的功能和工具,从而提升您的开发能力。那么,分支具体有什么作用呢?
为什么需要 Git 分支?
Git 分支在 Git 版本控制系统中扮演着至关重要的角色。以下是一些您需要 Git 分支的原因:
✅ **并行开发** – 现代软件系统非常复杂,通常需要多名开发者协同工作。分支允许多个开发者并行处理不同的功能,或修复错误,而不会产生冲突。每个分支都代表了新的开发方向。在处理特定功能时,您可以轻松切换不同的分支。
✅ **协作** – Git 分支使您能够与其他开发者在同一代码库上协作。您可以创建新分支,进行代码修改,并将其推送到共享仓库。其他开发者可以查看您的贡献,并在合并到主分支之前进行审查。
✅ **实验** – 您可以使用 git 分支测试新功能,而不会影响主分支。这是一个尝试新解决方案的机会。如果新的代码修改效果良好,您可以将其合并到主分支。
✅ **发布管理** – 您可以使用分支管理软件的发布。您可以为软件的每个特定版本创建对应的分支。这允许您在不影响主开发分支的情况下修复错误和进行更改。
✅ **版本控制** – 您可以使用 Git 分支进行版本控制。每个分支可以代表软件的一个新版本。对于开发者来说,最好为每个软件版本使用单独的分支,并追踪其中的更改,以此来管理不同的代码版本。
Git 入门 – 复习
现在您明白了“为什么”需要分支,接下来我们关注“如何做”。
首先,您需要设置一个 GitHub 账户。如果您还没有,请立即操作。接下来的部分将需要您动手实践。
Git 中的 git checkout
命令用于在目标实体的不同版本之间切换。在某些在线开发者社区中,“签出”指的是执行 checkout
命令。该命令可以作用于三个实体:分支、文件和提交。
检出分支
您可以使用 git branch
命令创建分支,然后使用 git checkout
命令进行导航。当您检出一个分支时,工作目录中的文件会更新为与该分支版本一致。
换句话说,您是在告诉 Git 记录您在该分支中的所有提交(即更改开发线)。为新功能使用专用分支是相对于旧的颠覆 (SVN) 工作流程的一大改进,您可以轻松地在前面提到的“为什么需要分支”的所有场景中使用它。
git checkout
命令不应与 git clone
混淆。前者用于在代码版本之间切换,而后者用于从远程仓库获取代码。
使用现有分支
如果您的仓库中存在分支,可以使用 git branch
命令在命令行界面中查看它们。
该命令会列出所有可用的分支,其中当前活动分支会以绿色高亮显示(假设您使用的是 Windows 操作系统和 Visual Studio Code)。要在分支之间切换,请使用 git checkout branchname
,其中 “branchname” 代表您的分支名称。您可以使用任何命名约定。
创建 Git 分支
假设您正处于软件开发过程中,并想添加一项新功能。解决此问题的最佳方法是使用 git branch
创建一个新分支。
实际上,在命令行中您需要输入:
git branch branchname
这表示您在主分支(通常是运行实时项目的分支)之外创建了一个新分支。在这个例子中,新分支的名称是 “branchname”。
要切换到您的新分支,可以使用 git checkout
命令,如下所示:
git checkout branchname
如果您像我一样喜欢节省时间,可以通过使用 git checkout -b
命令来创建一个分支并立即切换到该分支。事实上,以下操作将产生与之前步骤相似的结果:
git checkout -b branchname
参数 -b
会告诉 Git 在签出之前立即运行 git branch
命令。接下来,让我们看看其他创建 git 分支的方法。
下面将探讨更多根据需求创建分支的技术:
#1. 从当前分支创建分支
如果您想在现有分支的基础上创建一个新的分支,最好的方法是使用我们新学的命令:
git checkout -b <branchname>
此方法会自动创建新分支,并切换到该分支。为确认您已在新分支上,您的终端应该显示一条消息:“switched to a new branch ‘branchname’”。
如果您是新手开发者,应该避免在控制台输入的命令中带有尖括号 (<>)。尖括号仅用于说明,不应在实际操作中输入。
#2. 从不同的分支创建分支
您可以通过添加源分支名称作为起点,基于另一个现有分支创建新分支。命令如下:
git branch <new branch> <base branch>
在实际操作中,它可能是这样的:
git branch new-branch branchname
这表示 “new-branch” 是我们的新分支,而 “branchname” 是我们的基准分支。
#3. 从提交创建分支
如果想要从一个提交(而不是分支)创建新分支,您需要提供该提交的哈希值作为起点。要找到创建分支的提交的哈希值,请运行 git log
命令。
提交哈希值通常是一长串以 “commit” 开头的字符。有了提交哈希值,您可以使用以下命令创建新分支:
git branch <branch name> <commit-hash>
之后,您可以通过签出命令切换到新分支。
#4. 从标签创建分支
要从特定标签创建分支,首先需要找到要创建分支的标签名称。使用 git tag
命令列出仓库中所有可用的标签。
确定标签名称后,运行 git branch <new branch> <tag name>
。之后,您可以切换到新分支并开始进行代码修改。
#5. 使用分离的 HEAD 状态创建分支
您可以使用分离的 HEAD 状态,从特定提交创建新分支,而无需立即切换到该分支。当您想在不影响当前分支的情况下尝试新的更改时,此技术非常有用。首先,找到您想创建分支的提交哈希值,可以使用 git log
命令。
获取提交哈希值后,运行 git checkout <commit hash>
命令。此命令表示您处于分离的 HEAD 状态,也就是说,您当前不在任何分支上,而是指向特定的提交。接下来,可以使用 git branch <branch name>
根据当前提交创建分支。
#6. 从远程分支创建分支
首先创建一个本地分支,您应该已经很熟悉了: git checkout -b <branchname>
。当您将本地创建的分支推送到远程仓库时,会自动创建远程分支。
您可以通过以下命令将分支推送到远程仓库:git push origin <branch name>
。在此命令中,'origin'
代表您推送更改并创建分支的远程仓库。您可以用远程仓库的名称替换它,效果相同。
#7. 在远程仓库中创建分支
要在远程仓库中创建分支,请先使用 git fetch
命令获取远程仓库的最新更改。获取更新后,可以通过签出命令创建新分支。签出后,您可以通过以下命令推送新更改:
git push -u <remote repo> <new branch name>
在实际操作中,最好使用 origin
(就像从远程分支创建分支时一样)。这样可以节省时间,并减少输入远程仓库名称时出错的可能性。
GitHub 在线界面
所有在命令行上完成的操作都可以在图形界面中实现。要创建新分支,请访问您的项目仓库页面,查看左上角的分支选项(通常是 master/main)。
点击后,会显示可用分支的列表,以及一个文本字段,可用于查找或创建分支。
要创建分支,只需在文本字段中输入分支名称即可。在线界面是自动化的,允许您从特定元素(如标签、分支和提交)创建分支。如果您不熟悉分支操作,查阅 GitHub 的分支文档可以为您未来的开发工作提供帮助。
总结
通过学习多种创建 Git 分支的技术,您现在可以将新获得的技能融入到流畅的 Git 工作流程中,从而更好地进行软件开发。
最佳分支策略在很大程度上取决于您的团队、工作流程标准和具体情况。例如,如果您需要合作者的反馈,他们可以远程创建分支并提供有价值的贡献。
本文展示了 Git 分支如何为您提供强大的机制,以更有效地处理软件项目。尽管还有其他的 Git 控制选项,本文主要介绍了如何在命令行中使用 Git 分支进行导航,希望这能让您更有信心使用 Git。
在掌握创建分支的技巧之后,您可能会对我们关于删除 GitHub 分支的指南感兴趣。