其他分享
首页 > 其他分享> > 【Git与Github学习(一)】版本控制和分支管理

【Git与Github学习(一)】版本控制和分支管理

作者:互联网

文章目录


*Git VS. Github

  • Git是一个版本管理工具,可以在你电脑不联网的情况下,只在本地使用的一个版本管理工具,其作用就是可以让你更好的管理你的程序。
    • 比如你原来提交过的内容,以后虽然修改了,但是通过git这个工具,可以把你原来提交的内容重现出来,这样对于你后来才意识到的一些错误的更改,可以进行还原。
  • Github是一个面向开源及私有软件项目的托管平台,是一个网站,因为只支持Git 作为唯一的版本库格式进行托管,故名gitHub。
    • 每个程序员自己写的程序,可以在github上建立一个网上的仓库,你每次提交的时候可以把代码提交到网上,这样你的每次提交,别人也都可以看到你的代码,同时别人也可以帮你修改你的代码。
    • 这种开源的方式非常方便程序员之间的交流和学习。

请添加图片描述

1)版本控制

1、什么是版本控制?

版本控制系统是指对软件开发过程中程序代码、配置文件、文档等发生的变更进行管理的系统,它可以帮助团队更好的沟通协作,从而更好的进行交付,常见的版本控制系统分为集中式版本控制系统(如 SVN)和分布式版本控制系统(如 Git)。


2、分支管理有哪些?

2.1 GitFlow

GitFlow 是这三种分支策略中最早出现的。

2.1.1 GitFlow工作流简介

Gitflow工作流定义了一个围绕项目发布的严格分支模型,它会相对复杂一点,但提供了用于一个健壮的用于管理大型项目的框架,非常适合用来管理大型项目的发布和维护。

贯穿整个开发周期,master和develop分支是一直存在的,master分支可以被视为稳定的分支, 而develop分支是相对稳定的分支,特性开发会在feature分支上进行,发布会在release分支上进行,而bug修复则会在hotfix分支上进行,这样也有效避免了不同类型的开发工作在代码层级的耦合和干扰。

git-flow 的分支管理模型:

在这里插入图片描述

  • 主分支
    • master:master 对应着生产环境的代码。
    • develop:develop 为开发分支,当 develop的代码达到稳定点并准备发布时,需将其合并至 master,然后使用版本号标记该次合并。

  • 临时分支
    不同于主要分支,临时分支的生命周期有限,当使用完后需将其删除,临时分支可分为:
    • feature:功能分支,从 develop检出,必须合并回 develop。当开发某一功能时,从 develop 中检出 feature 分支,feature分支在开发未完成时一直存在,直到开发完后合并到 develop,然后删除该分支。
    • release:预发布分支,从 develop检出,必须合并到 develop 和 master。预发布分支通常用于在发布到测试环境的代码,待测试完成后,合并到 develop 和master。
    • hotfix:修复 bug 分支,从 master、release 中检出,必须合并回master、release,如果没有 release,就直接合并回 develop。如果在生产环境发现重大 bug,需要立即解决,可以创建
      hotfix-x.x.x分支,然后开始解决问题。修复完成合并到 release 并删除 hotfix。

这些分支中的每一个都有特定的用途,并受严格的规则约束,即哪些分支可能是其原始分支,哪些分支必须是其合并目标。


2.1.2 GitFlow 的优缺点


2.1.3 GitFlow工作流优化


2.2 GitLabFlow

GitLabFlow 出现的最晚,GitLabFlow 是开源工具 GitLab 推荐的做法。

GitLabFlow 支持 GitFlow 的分支策略,也支持 GitHubFlow 的“Pull Request”(在 GitLabFlow 中被称为“Merge Request”)。

在这里插入图片描述
GitLabFlow 中的 MergeRequest 是将一个分支合入到另一个分支的请求,通过 MergeRequest 可以对比合入分支和被合入分支的差异,也可以做代码的 Review。

*常见的项目环境

一般项目都是分几个环境的:

  • dev或本地环境
  • test测试环境
  • staging预发布环境
  • production线上环境

  • dev环境主要是什么?

    • 开发同学进行自测,进行功能流程串起来。
    • 出现bug之后,进行bug修改及验证,提交代码到test环境。

  • test环境是什么?

    • 测试同学重点关注的,进行新功能的测试,提交bug等都是依据test环境进行提交的。
    • 进行老功能测试回归,bug回归等。

  • staging环境是什么?

    • staging环境一般是产品同学进行验收,比如看一下开发同学是否按照需求来的,是否有大的问题可能没有考虑到。
    • 进行到生产环境的预部署(包括sql兼容语句、UI页面或接口的提前上线等等)。

  • pro环境是什么?

    • pro环境就是正式环境,一般就是我们说的线上环境。


2)版本控制工具

1、版本控制工具应该具备的功能


2、版本控制工具的种类

2.1 集中式版本控制工具:

CVS、SVN、VSS…
在这里插入图片描述

2.2 分布式版本控制工具:

Git、Mercurial、Bazaar、Darcs…

在这里插入图片描述



3)Git

请移步《【Git与Github学习(二)】Git的安装和使用》



4)GitHub

请移步《【Git与Github学习(三)】GitHub》



【部分内容参考自】

标签:Git,develop,版本控制,环境,GitFlow,Github,分支
来源: https://blog.csdn.net/m0_37621024/article/details/120468732