g4e 是 Git for Enterprise Developer的简写,这个系列文章会统一使用g4e做为标识,便于你们查看和搜索。git
章节目录github
前言编程
1. 基础篇:微信
- 为何要使用版本控制系统
- Git 分布式版本控制系统的优点
- Git 安装和设置
- 初始化Git存储库(Repo)
- 起步 1 – 建立分支和保存代码
- 起步 2 – 了解Git历史记录
- 起步 3 – 拉取请求 Pull Request 工做机制
Git是一种版本控制系统,让咱们首先了解一下使用版本控制系统的必要性。markdown
版本控制系统有助于你跟踪和保存在一段时间内所修改的代码,同时帮助你跟踪全部你所做出的变动,它就如同一部相机,不停的帮助你记录某一时刻的代码状态快照并永久保存这些快照,以便你能够在将来的任什么时候间找回以前的改动。架构
若是没有版本控制系统,你须要在本身的计算机上保存同一份代码的多个副本才能确保知足不少常见的开发场景。我相信不少刚刚接触编程的同窗都这样作过,可是这样作会很是危险,由于你可能会误删或者修改了其中某些文件,形成工做丢失,最糟糕的是,你没法知道你为何作了这些改动以及作了什么改动。在团队开发的场景下,版本控制系统变得更加剧要,由于你会很是频繁的和其余开发人员交换代码,有时须要同步,有时须要并行,若是没有版本控制系统,这一切会变成每一个人的噩梦,让你没法专一于你的开发工做,形成极大的浪费的效率损失。运维
对于企业开发者而言,若是没有版本控制系统基本上就没法开展平常工做,由于与我的开发不一样的是,企业开发须要几十人甚至成百上千人协同完成开发工做。同时,企业级软件还存在多个并行发布版本,多个运行环境(调测,测试,预生产,生产等),多种专业分工(架构,设计,开发,测试,运维)等复杂状况;要适应这样复杂的状况,没有高效的版本控制系统和适当的分支策略和流程控制是不可能实现的。ssh
简单总结一下使用版本控制系统的好处以下:分布式
统一工做方式:版本控制系统工做流可防止每一个人使用各类不兼容的工具按照本身的习惯进行开发的混乱局面。 版本控制系统提供流程强制执行措施和权控制能力,让全部人都有章可循。这对于企业开发者尤为重要,虽然软件开发是很是强调单个开发者个性的过程,但团队开发中个性化的环境和工具只能形成协做效率的降低,所以经过统一的版本控制工具来统一全部人的工做方式相当重要。ide
跟踪改动:每一个版本都有一个关于版本更改(如修复 bug 或新增功能)的说明。 此说明有助于按版本(而不是按各个文件更改)来跟踪代码更改。 能够根据须要随时在版本控制系统中查看和还原各个版本中存储的代码。 这样一来,你就能够在任意一版代码的基础上轻松开展新工做。这一特性对于不少企业开发中场景的场景很是有帮助,好比:在同步开发新版本的时候须要临时解决一个线上问题,咱们必须可以精准定位线上环境所使用的代码版本,在这个版本上进行修复并快速发布解决问题,同时还要确保这个bug修复不会在将来版本被遗漏。
团队协做:版本控制系统能够帮助不一样开发人员同步代码版本,并确保你的更改不会与团队其余成员的更改相互冲突。 团队依赖版本控制系统中的各类功能来预防和解决冲突,让团队成员能够同时进行代码修改。不少人在使用版本控制系统时最头疼就是冲突的解决,所以不少团队会禁止成员使用分支。对分支进行必定程度的控制是颇有必要的,可是控制过死会让团队成员束手束脚,形成团队成员之间的紧耦合,从而下降开发效率。有效的分支策略须要综合考虑多种因素,包括:团队结构,发布方式,环境部署流程,职能团队间的配合,代码质量的控制等。Git所表明的分布式版本控制系统有效的平衡了管控和自由之间的矛盾,容许你设计成最适合你的团队的编码协做模式。
保留历史:在团队保存代码的新版本时,版本控制系统会保留变动历史记录。 团队成员能够查看此历史记录,了解是谁在什么时候进行更改以及更改缘由。 有了历史记录,你就有信心进行各类尝试和探索,由于能够随时回退到上一正常版本。历史记录不只仅能够帮助成员有效的了解代码的前因后果,还能帮助成员避免犯错误。基于历史记录进行必定的数据分析后,咱们可让开发人员更智能的进行工做。
配合持续集成:持续集成/发布工具必须和版本控制系统有效的集成才能发挥出真正的能量,一个高效的分支策略的设计必须考虑持续集成和发布的要求,同时兼顾开发流程的有效性。持续集成和持续发布已经成为现代企业级软件开发的必需品,下降软件发布过程的成本,减小错误,避免失误,这些都须要CI/CD的配合。可是咱们改在怎样的代码版本上进行CI/CD,这恐怕是困扰不少人的难题。我见到的大多数团队的CI/CD都是与某一分支绑定的,这其实一种错误的作法,由于这样你只能在代码已经进入分支以后才能进行验证,CI对于代码质量的验证成为了马后炮,没法起到预防的做用;使用Git咱们能够针对代码变动进行预评审,预合并和预构建和发布,让你更为有效的组织本身的CI/CD流水线。
小结
版本控制系统的优化对于提升软件开发团队效率相当重要,充分了解你所使用的版本控制系统的特性并加以利用是每一个开发人员都必须掌握的基本能力。
相关文章:
- 微软研发云全家桶VSTS登录中国
- Markdown/reST 文档发布流水线
- 几款好用的Git GUI客户端工具
- 使用 SSH 链接 TFS/VSTS 的GIT仓库
- GitHub + VSTS 开源代码双向同步
请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息