如何从之前的 Git 提交创建新分支

GitGitBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本教程中,你将学习如何从之前的提交创建一个新的 Git 分支。对于需要在不影响主代码库的情况下试验新功能或修复 bug 的开发者来说,这是一项很有价值的技能。通过了解从之前的提交创建分支的过程,你可以维护一个干净、有条理的 Git 仓库,实现高效的协作和版本控制。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/checkout("Switch Branches") git/BranchManagementGroup -.-> git/log("Show Commits") git/BranchManagementGroup -.-> git/reflog("Log Ref Changes") git/BranchManagementGroup -.-> git/cherry_pick("Cherry Pick") git/BranchManagementGroup -.-> git/rebase("Reapply Commits") subgraph Lab Skills git/commit -.-> lab-393015{{"如何从之前的 Git 提交创建新分支"}} git/branch -.-> lab-393015{{"如何从之前的 Git 提交创建新分支"}} git/checkout -.-> lab-393015{{"如何从之前的 Git 提交创建新分支"}} git/log -.-> lab-393015{{"如何从之前的 Git 提交创建新分支"}} git/reflog -.-> lab-393015{{"如何从之前的 Git 提交创建新分支"}} git/cherry_pick -.-> lab-393015{{"如何从之前的 Git 提交创建新分支"}} git/rebase -.-> lab-393015{{"如何从之前的 Git 提交创建新分支"}} end

理解 Git 分支和提交

Git 是一个分布式版本控制系统,它允许开发者随着时间的推移管理和跟踪其代码库的更改。Git 的核心有两个基本概念:分支和提交。

什么是 Git 分支?

Git 分支是一条轻量级的、独立的开发线路,它允许开发者在不影响主代码库的情况下处理某个功能或修复某个 bug。分支提供了一种隔离更改并试验新想法的方式,而不会影响主代码仓库。

graph LR A[主分支] --> B[功能分支] B --> C[提交 1] B --> D[提交 2] B --> E[提交 3]

什么是 Git 提交?

Git 提交是代码库在特定时间点的一个快照。每个提交都包含一个唯一标识符(一个哈希值)、作者信息、提交消息以及自上一次提交以来所做的更改。提交构成了 Git 仓库的基本组成部分,使开发者能够跟踪其代码的演变。

提交哈希 作者 日期 消息
a1b2c3d4 John Doe 2023-04-01 实现了新功能
e5f6g7h8 Jane Smith 2023-04-02 修复了登录过程中的 bug
i9j0k1l2 Bob Johnson 2023-04-03 为提高性能重构了代码库

理解分支和提交的概念对于在基于 Git 的项目中进行有效的管理和协作至关重要。有了这个基础,现在你就可以学习如何从之前的 Git 提交创建一个新分支了。

识别之前的 Git 提交

在你能够从之前的 Git 提交创建新分支之前,你需要能够识别出你想要用作起点的特定提交。Git 提供了几种引用之前提交的方法,包括:

使用提交哈希

每个 Git 提交都有一个唯一标识符,称为提交哈希,它是一个 40 个字符的十六进制字符串。你可以使用完整的提交哈希或前几个字符来引用特定的提交。例如:

git log
commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
Author: John Doe <[email protected]>
Date:   Sat Apr 1 12:34:56 2023

    Implemented new feature

在这种情况下,你可以使用完整的哈希 a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6 或缩短版本 a1b2c3d 来引用该提交。

使用相对引用

Git 还允许你相对于当前 HEAD(当前分支上的最新提交)引用提交。例如,HEAD~1 指的是当前 HEAD 之前的提交,HEAD~2 指的是当前 HEAD 之前两个的提交,依此类推。

使用分支名称

如果你想要引用的提交在特定分支上,你可以使用分支名称来识别它。例如,developfeature/new-ui

通过了解这些识别之前 Git 提交的不同方法,你现在可以继续从特定提交创建新分支了。

从之前的提交创建新分支

既然你已经知道如何识别之前的 Git 提交,那么让我们来学习如何从该提交创建一个新分支。

步骤 1:识别提交

首先,你需要识别出你想要用作新分支起点的提交。你可以使用上一节讨论的任何方法,例如提交哈希或相对引用。

例如,假设你想基于哈希为 a1b2c3d 的提交创建一个新分支。

步骤 2:创建新分支

要从之前的提交创建新分支,你可以使用带有 -b 选项的 git checkout 命令来创建新分支。语法如下:

git checkout -b <新分支名称> <提交引用>

<新分支名称> 替换为你想要给新分支起的名称,将 <提交引用> 替换为你在上一步中识别出的提交。

git checkout -b feature/new-ui a1b2c3d

此命令将创建一个名为 feature/new-ui 的新分支并切换到该分支,使用哈希为 a1b2c3d 的提交作为起点。

graph LR A[主分支] --> B[功能分支] B --> C[提交 1] B --> D[提交 2] B --> E[提交 3] B --> F[新提交]

现在你可以开始处理你的新功能或修复 bug 了,放心你的更改与主代码库是隔离的。

切换到新分支

从之前的 Git 提交创建新分支后,你需要切换到新分支才能开始在上面工作。Git 提供了 git checkout 命令来在分支之间切换。

切换到新分支

要切换到你刚刚创建的新分支,使用以下命令:

git checkout feature/new-ui

feature/new-ui 替换为你创建的新分支的名称。

graph LR A[主分支] --> B[功能分支] B --> C[提交 1] B --> D[提交 2] B --> E[提交 3] B --> F[新提交]

一旦你切换到新分支,你就可以开始进行更改、提交它们,并在需要时将分支推送到远程仓库。

验证当前分支

要检查你当前所在的分支,你可以使用 git status 命令:

$ git status
On branch feature/new-ui

这将确认你现在正在 feature/new-ui 分支上工作,该分支是从之前的 Git 提交创建的。

通过了解如何切换到新分支,你现在可以开始处理你的功能或修复 bug 了,放心你的更改与主代码库是隔离的。

验证新分支和提交

从之前的 Git 提交创建新分支并切换到该分支后,你会想要验证新分支和提交是否正确。

验证新分支

要确认你在正确的分支上,你可以使用 git branch 命令:

$ git branch
  main
* feature/new-ui

星号(*)表示当前活动分支,它应该是你创建的新分支。

验证提交

要验证新分支所基于的提交,你可以使用 git log 命令:

$ git log
commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
Author: John Doe <[email protected]>
Date:   Sat Apr 1 12:34:56 2023

    实现了新功能

这将显示提交的详细信息,包括提交哈希、作者、日期和提交消息。确保提交信息与你用作新分支起点的信息匹配。

graph LR A[主分支] --> B[功能分支] B --> C[提交 1] B --> D[提交 2] B --> E[提交 3] B --> F[新提交]

通过验证新分支及其所基于的提交,你可以确信你正在处理正确的代码库,并且你的更改将与主开发线路隔离开来。

实际应用和用例

从之前的 Git 提交创建新分支是一项强大的技术,可应用于各种场景。以下是一些实际应用和用例:

试验新功能

当你在处理新功能时,可以从稳定的提交创建一个分支,以试验不同的方法或想法,而不会影响主代码库。这使你能够安全地尝试更改,并在它们未按预期工作时丢弃它们。

修复漏洞

如果在代码库中发现了一个漏洞,你可以从已知正常工作的先前提交创建一个新分支。这可确保你的漏洞修复与任何正在进行的开发隔离开来,降低引入新问题的风险。

撤销更改

如果最近的一次提交引入了问题,你可以从先前正常工作的提交创建一个新分支来回滚更改。这使你能够快速回滚有问题的代码,而不会影响项目的其他部分。

在项目中协作

在团队协作时,从先前的提交创建分支有助于管理冲突,并确保每个开发者的工作是隔离的。这使得将更改合并回主代码库时更容易,而不会引入破坏问题。

维护多个版本

在某些情况下,你可能需要同时维护软件的多个版本。通过从特定提交创建分支,你可以轻松地在不同版本之间切换,并将漏洞修复或功能更新应用到相应的分支。

graph LR A[主分支] --> B[功能分支] B --> C[提交 1] B --> D[提交 2] B --> E[提交 3] B --> F[新提交] A --> G[漏洞修复分支] G --> H[提交 1] G --> I[提交 2] G --> J[提交 3] G --> K[新提交]

通过了解从先前的 Git 提交创建新分支的实际应用和用例,你可以利用这项强大的技术来改进你的开发工作流程,并更好地管理项目的代码库。

总结

通过遵循本教程中概述的步骤,你将能够轻松地从先前的提交创建一个新的 Git 分支。这项技术使你能够探索新想法、修复漏洞或试验更改,而不会干扰主开发分支。对于任何精通 Git 的开发者来说,理解如何从先前的提交创建分支是一项关键技能,因为它能增强你有效管理代码库以及保持干净、有条理的 Git 工作流程的能力。