Git理论基础
本文最后更新于:4 个月前
Git在本地是如何工作的,常见的Git工作流,fork和branch的区别
Git理论基础
一、Git工作机制
Git在本地的工作机制如下图,一共分为3个区:
- 工作区:对应实际的文件夹,也称为工作树
- 暂存区:在数据库和工作树之间有索引,索引是为了向数据库提交作准备的区域
- 仓库:本质是一个数据库,但是里面保存的不是工作树的内容,而是保存中间索引的状态
二、Git工作流程
作为代码版本管理系统,不可避免涉及多人协作,而协作必须要有一个规范的工作流程,才能有效地进行合作。下面介绍的是3种广泛被使用的工作流程。
- Git flow
- GitHub flow
- GitLab flow
三者共同点:「功能驱动型开发」,即:以 功能/bug修复 为开发起点,以 功能分支(feature branch)/补丁分支(fix branch)为载体,完成开发后,合并入主分支。
2.1、Git flow
- 2个长期分支:master主分支、develop开发分支
- 3个短期分支:feature功能分支、fix补丁分支、release预发布分支
- “版本发布”的管理模式,一段时间发布一个版本
- 缺点:维护麻烦,需要不停切换主分支、开发分支并分别维护
- 优点:清晰可控
2.2、GitHub flow
- 只有一个master主分支(没有develop分支),有 功能/补丁开发 需求时,直接从master拉取新分支,完成开发后向master发起
pull request
(简称“pr”),pull request
被接受后合并进master分支 - 优点:维护简单,适合“持续发布”的产品
- 缺点:master分支可能与发布的产品版本不一致
2.3、GitLab flow
- 只有一个master主分支(没有develop分支)
- 「上游优先」,如下图,master是pre-production的上游,pre-production又是production的上游(即将代码流向的关系)。只有上游被采纳了的代码变化,才能应用到下游
- 一个版本一个分支,对于每一个发布的稳定版本,都从master新拉出一个分支。后续只有修复bug才允许把代码合并到这些分支
三、fork与branch区别
fork:分叉
branch:分支
这两者在Git中都有代表分支的意思。但是fork是代码仓库托管平台(如github)的一种操作,表示从托管平台复制一个新的、自己的仓库;而branch指的是从仓库内划分出一个新的分支。
1 |
|
四、HEAD
- HEAD 指向当前分支最新的提交。
- HEAD~ 等同于 HEAD^,表示当前提交的父提交。
- HEAD^ 表示当前提交的第一个父提交。
- HEAD~n 表示当前提交的第 n 代祖先提交。
Git理论基础
http://timegogo.top/2023/02/22/Git/Git理论基础/