g4e基础篇#2 Git分布式版本控制系统的优势
g4e 是 Git for Enterprise Developer的简写,这个系列文章会统一使用g4e作为标识,便于大家查看和搜索。
章节目录
1. 基础篇:
- 为什么要使用版本控制系统
- Git 分布式版本控制系统的优势
- Git 安装和设置
- 初始化Git存储库(Repo)
- 起步 1 – 创建分支和保存代码
- 起步 2 – 了解Git历史记录
- 起步 3 – 拉取请求 Pull Request 工作机制
Git是当前最棒的版本控制系统,已经迅速成为了事实的业界标准,以下是Stackoverflow网站在过去几年中针对版本控制系统使用情况的统计,你可以明显看出Git所占的绝对领导位置。
具体数据请参考:
• https://insights.stackoverflow.com/survey/2015
• https://insights.stackoverflow.com/survey/2017
Git和其他版本管理系统最大的区别在于它是一种分布式的版本管理系统(DVCS),这主要是针对类似SVN, TFVC或者ClearCase这种集中式版本管理系统(CVCS)而言的。简单来说,每个Git存储库都是一份完整的代码,历史记录以及分支的集合,而CVCS系统只在服务器上保存所有这些信息,而在本地一般只有当前版本和至多一个历史版本。这种能力赋予了开发人员非常灵活的工作方式,因为分支/查找历史/比较/合并等操作都不需要通过服务器进行,就可以更为轻松的脱机工作或者远程工作;同时在连接到网络的时候又可以和其他人共享代码。
Git 的灵活性和用户接受度使之成为任何团队的首选。 现在,许多开发者和大学毕业生都已知道如何使用 Git。Git 的用户社区中已有许多资源可用来培训开发者,同时 Git 的用户接受度使得用户可以在需要时轻松获得帮助。 几乎所有的开发工具和技术栈都支持 Git,Git 命令行工具可以在所有主要操作系统上运行。对于企业来说,如果不使用Git会让那些新入职的开发者感到非常不适应,并且大幅度降低他们的开发效率,我曾将见到过开发者因为应聘企业使用老旧的开发工具而拒绝接受企业的Offer。
Git的一些基本概念
提交 (commit)
每当通过git保存修改时,Git 会创建一个提交 (commit)。 提交就是在某一个时间点所有文件改动的快照。 如果在下一个提交中文件没有变化,Git 会使用之前存储的文件。 每一个提交都针对前一个提交保存一个链接,这种链接关系形成了一个开发历史的数据链路。
这种链接关系让我们可以将代码还原为以前的提交、检查两个提交的文件变化,并能查看何时在哪里进行了更改等信息。 每个提交在 Git 中都有一个唯一的标识 (commit id),这个id是通过对提交的内容执行加密哈希算法得出的。 由于一切都已经过哈希处理,因此 Git 一定可以检测到更改、信息丢失或文件损坏。
分支(branch)
Git分支与传统版本管理系统不同,并不会在文件系统中创建重复的文件,而是通过修改当前文件所指向的具体版本(commit id)来实现的,所以你不必切换文件夹就可以所以切换到任何分支上工作。
文件和提交状态
Git 中的文件有以下三种状态:已修改(modified)、已暂存(staged)或已提交(committed)。 首次修改文件时,更改只存在于工作目录中。 这些更改还不属于提交或开发历史记录。 必须暂存(stage)要包含在提交中的已更改文件(可以省略其中某些文件)才能将改动提交到Git。 暂存区域包含下一个提交将包含的所有更改。 对暂存文件感到满意后,你就可以提交(commit)这些文件,并为提交添加描述信息。 这个提交就成为开发历史记录的一部分了。
Git的优势
并行开发
每个人都有自己的代码本地副本,可以同时在自己的分支上工作。 你也可以脱机使用 Git,因为几乎所有操作都是在本地执行。
加快发布速度
借助分支,可以灵活地进行同步开发。 主分支(master)作为发布版本的稳定代码。 功能分支(feature branch)包含正在进行的工作,完成后将合并到主分支中。 通过将主分支与正在进行的开发分隔开来,可以更好地管理稳定代码,并更为高效安全的发布代码。
内置集成
因为 Git 用户接受度非常高,它已被集成到大多数工具和产品中。 所有主流的 IDE 都内置有 Git 支持,还有很多工具提供了与 Git 集成的持续集成、持续部署、自动测试、工作项跟踪、指标和报表功能。 这种集成简化了日常工作流,降低了企业开发中工具二次开发,集成和定制的需求。
强大的社区支持
Git 作为开放源代码管理系统,已经成为版本控制系统的业界标准,为团队提供所需的一切工具和资源。 相比其他版本控制系统,Git 的社区支持非常强大,你可以在需要时轻松获得帮助。
Git适用于团队协作
将 Git 与其他工具配合使用,可以鼓励团队协作、同时确保策略的实行、实现自动化,并能提高工作的可见性和可跟踪性,从而提高团队的工作效率。 你可以单独选择不同的版本控制系统、工作项跟踪系统以及持续集成和部署工具。 也可以选择 Visual Studio Team Services / Team Foundation Server 作为端到端的管理工具,团队具备非常高的自主性和灵活性。
Git结合拉取请求(Pull Request)
使用拉取请求可以确保代码检视过程的有效,然后再将它们合并到主分支中。 在拉取请求中进行的讨论非常有价值,可确保代码质量并促进团队成员相互学习和协作。 Visual Studio Team Services / Team Foundation Server 提供了非常棒的拉取请求体验,你可以浏览文件更改、发表意见、检查提交、查看生成,并能通过社交化投票来批准代码合并。
分支策略
分支策略是 Visual Studio Team Services / Team Foundation Server中提供一项有效保持主分支(master)代码质量的策略机制,让团队可以通过配置灵活的策略实现对主分支的保护,比如:不允许直接向主分支提交代码,必须经过代码检视才能合并,必须经过特定人员批准才能合并,必须解决所有代码检视意见才能合并等一系列非常有效的保护手段;同时也允许你自己定制更加复杂的策略规则来适配团队的不同诉求。
小结
到这里,我们对Git的基本工作原理和它的优势具备了一些了解。下一章中我们将开始搭建Git操作环境。
相关文章:
- 微软研发云全家桶VSTS登陆中国
- Markdown/reST 文档发布流水线
- 几款好用的Git GUI客户端工具
- 使用 SSH 连接 TFS/VSTS 的GIT仓库
- GitHub + VSTS 开源代码双向同步
请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息
g4e基础篇#2 Git分布式版本控制系统的优势的更多相关文章
- g4e基础篇#1 什么是版本控制系统
g4e 是 Git for Enterprise Developer的简写,这个系列文章会统一使用g4e作为标识,便于大家查看和搜索. 章节目录 前言 1. 基础篇: 为什么要使用版本控制系统 Git ...
- g4e基础篇#3 Git安装与配置
g4e 是 Git for Enterprise Developer的简写,这个系列文章会统一使用g4e作为标识,便于大家查看和搜索. 章节目录 前言 1. 基础篇: 为什么要使用版本控制系统 Git ...
- Git ——分布式版本控制系统
Git ——分布式版本控制系统 本人git主页地址:https://github.com/lendoon/test.git git使用心得:初次接触git在课堂上,老师给我们提供了一个代码托管的场所, ...
- 开发效率优化之Git分布式版本控制系统(一)
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680本篇文章将先从Git分布式版本控制系统来阐述开发效率优化 一,企业 ...
- Git分布式版本控制系统(下)
Git分布式版本控制系统(下) 链接:https://pan.baidu.com/s/1CgaEv12cwfbs5RxcNpxdAg 提取码:fytm 复制这段内容后打开百度网盘手机App,操作更方便 ...
- GIT分布式版本控制系统
Git诞生历史 我想大家还记得Linus torvalds在1991年时发布了Linux操作系统吧,从那以后Linux系统变不断发展壮大,因为Linux系统开源的特性,所以一直接受着来自全球Linux ...
- 手把手教你玩转Git分布式版本控制系统! (转载)
目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 Git诞生历史 ...
- 手把手教你玩转Git分布式版本控制系统!
目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 1 Git诞生历 ...
- GIT 分布式版本控制系统的简单使用介绍
GIT 分布式版本控制系统的简单使用介绍 1.GIT的概念Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 与 SVN 区别:1. GIT不仅仅是个版本控制系统,它 ...
随机推荐
- CentOS环境下Docker私有仓库搭建
本文讲述如何搭建docker私有仓库. 有了docker hub,为什么还要搭建docker私有仓库? 1.性能考虑:docker hub的访问要通过互联网,性能太低. 2.安全性:更多的时候,镜像不 ...
- Android Studio问题汇总
1) Android Studio重命名工程名称: 1. 关闭Android Studio 2. 修改project所在路径的文件夹名字为[NewName] 3. 修改根目录下的.iml文件名为[Ne ...
- java把html标签字符转普通字符(反转换成html标签)(摘抄)
下面是java把html标签字符转换,我用了spring 包中的 org.springframework.web.util.HtmlUtils 了解了源代码并且进步了使用,发现写得真不错...同时也可 ...
- Netty之粘包分包
粘包现象 客户端在一个for循环内连续发送1000个hello给Netty服务器端, Socket socket = new Socket("127.0.0.1", 10101); ...
- 【NOIP2009提高组】最优贸易
https://www.luogu.org/problem/show?pid=1073 如果他想在i点卖出,那么就要在从1点出发到i点的路径里找个最便宜的买入,用Bellman-Ford求出这样最便宜 ...
- echarts分组插件echarts.group代码分享
前言 echarts是百度出品的一款很棒的前端图表控件,被评为"百度少有的良心产品".可以实现散点图.折线图.柱状图.地图.饼图.雷达图.K线图等等几十种常用.不常用的图表,效果酷 ...
- ansible批量管理软件部署及剧本
服务器版本信息: Centos6.9 [root@db02 ~]# uname -a Linux db02 -.el6.x86_64 # SMP Tue Mar :: UTC x86_64 x86_6 ...
- Loadrunner 中socket协议RecvBuffer接收到数据长度为空
socket通讯,有两种方式,一种是建立长连接(TCP),建立后,不停的发送,接收.另外一种是建立短连接(UDP),建立连接,发送报文,接收响应,关闭连接.两种方式 server的开销不同. 今天出现 ...
- 如何在BIOS里设置定时关机?
如何在BIOS里设置定时关机? 通过CMOS设置实现定时开机的设置过程如下: 首先进入"CMOS SETUP"程序(大多数主板是在计算机启动时按DEL键进入): 然后将光条移到&q ...
- java使用线程请求訪问每次间隔10分钟连续5次,之后停止请求
java使用线程请求訪问每次间隔10分钟连续5次,收到对应的时候停止请求 package com.qlwb.business.util; /** * * * @类编号: * @类名称:RequestT ...