g4e基础篇#1 什么是版本控制系统

g4e 是 Git for Enterprise Developer的简写,这个系列文章会统一使用g4e作为标识,便于大家查看和搜索。

章节目录

前言

1. 基础篇:

  • 为什么要使用版本控制系统
  • Git 分布式版本控制系统的优势
  • Git 安装和设置
  • 初始化Git存储库(Repo)
  • 起步 1 – 创建分支和保存代码
  • 起步 2 – 了解Git历史记录
  • 起步 3 – 拉取请求 Pull Request 工作机制


Git是一种版本控制系统,让我们首先了解一下使用版本控制系统的必要性。

版本控制系统有助于你跟踪和保存在一段时间内所修改的代码,同时帮助你跟踪所有你所作出的变更,它就如同一部相机,不停的帮助你记录某一时刻的代码状态快照并永久保存这些快照,以便你可以在未来的任何时间找回之前的改动。

如果没有版本控制系统,你需要在自己的计算机上保存同一份代码的多个副本才能确保满足很多常见的开发场景。我相信很多刚刚接触编程的同学都这样做过,但是这样做会非常危险,因为你可能会误删或者修改了其中某些文件,造成工作丢失,最糟糕的是,你无法知道你为什么做了这些改动以及做了什么改动。在团队开发的场景下,版本控制系统变得更加重要,因为你会非常频繁的和其他开发人员交换代码,有时需要同步,有时需要并行,如果没有版本控制系统,这一切会变成每个人的噩梦,让你无法专注于你的开发工作,造成极大的浪费的效率损失。

对于企业开发者而言,如果没有版本控制系统基本上就无法开展日常工作,因为与个人开发不同的是,企业开发需要几十人甚至成百上千人协同完成开发工作。同时,企业级软件还存在多个并行发布版本,多个运行环境(调测,测试,预生产,生产等),多种专业分工(架构,设计,开发,测试,运维)等复杂情况;要适应这样复杂的情况,没有高效的版本控制系统和适当的分支策略和流程控制是不可能实现的。

简单总结一下使用版本控制系统的好处如下:

统一工作方式:版本控制系统工作流可防止每个人使用各种不兼容的工具按照自己的习惯进行开发的混乱局面。 版本控制系统提供流程强制执行措施和权控制能力,让所有人都有章可循。这对于企业开发者尤其重要,虽然软件开发是非常强调单个开发者个性的过程,但团队开发中个性化的环境和工具只能造成协作效率的下降,因此通过统一的版本控制工具来统一所有人的工作方式至关重要。

跟踪改动:每个版本都有一个关于版本更改(如修复 bug 或新增功能)的说明。 此说明有助于按版本(而不是按各个文件更改)来跟踪代码更改。 可以根据需要随时在版本控制系统中查看和还原各个版本中存储的代码。 这样一来,你就可以在任意一版代码的基础上轻松开展新工作。这一特性对于很多企业开发中场景的场景非常有帮助,比如:在同步开发新版本的时候需要临时解决一个线上问题,我们必须能够精准定位线上环境所使用的代码版本,在这个版本上进行修复并快速发布解决问题,同时还要确保这个bug修复不会在未来版本被遗漏。

团队协作:版本控制系统可以帮助不同开发人员同步代码版本,并确保你的更改不会与团队其他成员的更改相互冲突。 团队依赖版本控制系统中的各种功能来预防和解决冲突,让团队成员可以同时进行代码修改。很多人在使用版本控制系统时最头疼就是冲突的解决,因此很多团队会禁止成员使用分支。对分支进行一定程度的控制是很有必要的,但是控制过死会让团队成员束手束脚,造成团队成员之间的紧耦合,从而降低开发效率。有效的分支策略需要综合考虑多种因素,包括:团队结构,发布方式,环境部署流程,职能团队间的配合,代码质量的控制等。Git所代表的分布式版本控制系统有效的平衡了管控和自由之间的矛盾,允许你设计成最适合你的团队的编码协作模式。

保留历史:在团队保存代码的新版本时,版本控制系统会保留变更历史记录。  团队成员可以查看此历史记录,了解是谁在何时进行更改以及更改原因。 有了历史记录,你就有信心进行各种尝试和探索,因为可以随时回退到上一正常版本。历史记录不仅仅可以帮助成员有效的了解代码的来龙去脉,还能帮助成员避免犯错误。基于历史记录进行一定的数据分析后,我们可以让开发人员更智能的进行工作。

配合持续集成:持续集成/发布工具必须和版本控制系统有效的集成才能发挥出真正的能量,一个高效的分支策略的设计必须考虑持续集成和发布的要求,同时兼顾开发流程的有效性。持续集成和持续发布已经成为现代企业级软件开发的必需品,降低软件发布过程的成本,减少错误,避免失误,这些都需要CI/CD的配合。但是我们改在怎样的代码版本上进行CI/CD,这恐怕是困扰很多人的难题。我见到的大多数团队的CI/CD都是与某一分支绑定的,这其实一种错误的做法,因为这样你只能在代码已经进入分支之后才能进行验证,CI对于代码质量的验证成为了马后炮,无法起到预防的作用;使用Git我们可以针对代码变更进行预评审,预合并和预构建和发布,让你更为有效的组织自己的CI/CD流水线。

小结

版本控制系统的优化对于提高软件开发团队效率至关重要,充分了解你所使用的版本控制系统的特性并加以利用是每个开发人员都必须掌握的基本能力。



相关文章:



请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息

?

原文地址:https://www.cnblogs.com/ups216/p/8183105.html

时间: 2024-11-10 20:17:10

g4e基础篇#1 什么是版本控制系统的相关文章

g4e基础篇#4 了解Git存储库(Repo)

章节目录 前言 1. 基础篇: 为什么要使用版本控制系统 Git 分布式版本控制系统的优势 Git 安装和设置 了解Git存储库(Repo) 起步 1 – 创建分支和保存代码 起步 2 – 了解Git历史记录 起步 3 – 拉取请求 Pull Request 工作机制 Git 存储库看上去就是一个文件夹,只是在这个文件夹中不仅仅保存了所有文件的当前版本,也同时保存了所有的历史记录,这些额外的信息都保存在当前文件夹下面的.git子目录中.因为前面我们所描述的git跟踪改动的特殊方式 ,git可以在

Puppet扩展篇7-puppet代码与版本控制系统的结合

一.介绍 通过安装部署Puppet C/S模型,实现Puppet Server端管理所有被控制机的整个生命周期:从初始化到软件升级.从配置文件创建到测试部署.从系统维护到服务器迁移等.Puppet能够持续化的与 被控制机进行交互,从而实现配置文件的及时检测更新.结合SVN版本控制系统,puppet可在更新之前将当前正在运行的环境以版本的方式保存到SVN版 本控制系统中,方便以后通过puppet更新出错或者需要回滚到之前的某一个环境时快速恢复. 二.环境介绍 序号    服务器类型        

如何选择版本控制系统之二

之前写了一篇<如何选择版本控制系统 ---为什么选择Git版本控制系统>,地址是:http://www.cnblogs.com/goldenfish/p/6876864.html,有兴趣的可以去看看,本篇文章算是这个系列的第二篇文章. Git诞生于2002年,由Linux之父Linus Torvalds和他的团队开发并不断完善,它秉承了Linux的开源精神,为广大研发团队带来了非常棒的版本控制体验.本文立足Git的工作原理,深入探讨各种研发场景中工作流等问题. Git工作模式 代码提交过程 一

如何选择版本控制系统之二---Git的研发应用场景

之前写了一篇<如何选择版本控制系统 ---为什么选择Git版本控制系统>,地址是:http://laoyudage.blog.51cto.com/12854334/1927409,有兴趣的可以去看看,本篇文章算是这个系列的第二篇文章. Git诞生于2002年,由Linux之父Linus Torvalds和他的团队开发并不断完善,它秉承了Linux的开源精神,为广大研发团队带来了非常棒的版本控制体验.本文立足Git的工作原理,深入探讨各种研发场景中工作流等问题. Git工作模式 代码提交过程 一

如何选择版本控制系统之二---Git的研发应用场

之前写了一篇<如何选择版本控制系统 ---为什么选择Git版本控制系统>,地址是:http://www.cnblogs.com/goldenfish/p/6876864.html,有兴趣的可以去看看,本篇文章算是这个系列的第二篇文章. Git诞生于2002年,由Linux之父Linus Torvalds和他的团队开发并不断完善,它秉承了Linux的开源精神,为广大研发团队带来了非常棒的版本控制体验.本文立足Git的工作原理,深入探讨各种研发场景中工作流等问题. Git工作模式 代码提交过程 一

分布式版本控制系统(git基础)

一,了解git 1,git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一),由Linus公司(创建了开源的linux)开发而成. 2,分布式版本控制系统是什么意思?具体表现在哪? Git就是分布式管理系统,于其对应的集中式版本控制系统有SVN,简单的说,分布式的版本控制就是每个人都可以创建一个独立的代码仓库,用于管理,各种版本控制的操作都可以在本地完成,每个人修改的代码都可以合并推送到另一个代码仓库中.而像SVN这样,只有一个中央服务器,所有的开发人员都必须依赖与这个代码仓库,

Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析

转载请注明出处:CN_Simo. 题解: 本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界. 本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编译,所以借此篇内容说明一下原由并为之后文章的学习做准备. 即使本片内容只是在围绕一个小小的HelloWorld程序开展,但还是希望朋友们不要急于求成,"欲速则不达". 文章整体思路: 我们循序渐进地来看,一个Qt应用的完成有以下一个重要的步骤: 项目创建->源码编译->程序运行

构建企业代码管理系统之SVN服务(基础篇)

一.What's is a subversion Subversion(SVN)是一个开源的,跨平台的版本控制系统,由CollabNet公司成立于2000年:Subversion作为新一代的版本管理系统,以其目录版本化.原子提交.版本化的元数据.更加有效的分支和标签等特性,至今已被众多的互联网企业使用来管理网站.论坛的代码文件:Subversion最独特的地方,便是可以通过Apache的扩展模块与Apache的HTTP服务相结合,实现更安全的特性与管理,其次用户还可以通过HTTP协议去访问版本库

[.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境【转】

转自:http://www.cnblogs.com/yubinfeng/p/5182271.html 前面介绍了两款代码管理工具VSS和SVN,这两种管理工具在很长一段时间曾为我们的代码管理提供了便利,本篇介绍一款思维方式完全不同(也可以说不合常理)的版本控制系统——Git.可以说Git目前非常火,这与设计者剑指偏锋的设计思想有很大关系.Git采用发散的思维管理代码,最大的特点就是分布式,他可以让来自不同地区的开发者共同完成一个作品,让每个开发者都可以发挥个性,同时又可以由发起者(即项目管理者)