g4e基础篇#2 Git分布式版本控制系统的优势


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操作环境。

原文地址:http://devopshub.cn/2018/01/05/g4e-basic-02-git-intro/


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322353.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P4989-二进制之谜【堆,贪心】

正题 题目链接:https://www.luogu.org/problemnew/show/P4989 题目大意 一个二进制数两两配对,要求 配对的数不能交叉(用同一个区间但不包含)0在前1在后 要求配对最多的情况下所有配对的距离之和最远。 解题思路 将0视为左括号,1视为右括号&#xf…

案例分析 | 由Decimal操作计算引发的Spark数据丢失问题

转载自 案例分析 | 由Decimal操作计算引发的Spark数据丢失问题 供稿 | Hadoop Team 编辑 | 顾欣怡 本文3058字,预计阅读时间10分钟 导读 eBay的Hadoop集群上面每天运行着大量Spark计算任务。对于数据计算任务,其计算性能十分重要,数据质…

入门干货之Electron的.NET实现-Electron.NET

0x01、Electron.NET1、介绍Electron是由Github上的一支团队和一群活跃贡献者维护。用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库。 Electron通过将Chromium和Node.Js合并到同一个运行时环境中,并将其打包为Mac,Windows和Linu…

通过Chocolatey软件包管理器安装.NET Core

在Linux的世界里,有了yum/apt-get百分之九十的软件都可以通过它来安装管理。但是在Windows系统上,装个软件还是挺折腾的。比如我要装个Chrome浏览器,我先得打开IE浏览器吧,我还打不开Chrome的官网吧,得百度吧&#xff…

(十三)RabbitMQ使用详解

RabbitMQ是基于AMQP的一款消息管理系统。AMQP(Advanced Message Queuing Protocol),是一个提供消息服务的应用层标准高级消息队列协议,其中RabbitMQ就是基于这种协议的一种实现。 常见mq: ActiveMQ:基于JMSRabbitMQ:…

ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理

在ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现中,我介绍了事件驱动型架构的一种简单的实现,并演示了一个完整的事件派发、订阅和处理的流程。这种实现太简单了,百十行代码就展示了一个…

和某ZYC巨佬和XXY巨佬的随机挑战2总结

前言 一切的起点在那个炎热的酷暑,菜的一批的WYCWYCWYC坐在最容易被∗*∗的左下角。这时他永远都想不到,他与巨佬之间的挑战,即将开始。 正题 规则 随机跳333到蓝题,然后写完。 完成记录 题目博客 T1:P3100−[USACO14JAN]T1:P31…

(十四)消息中间件MQ详解及四大MQ比较

一、消息中间件相关知识 1、概述 消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ&a…

g4e基础篇#3 Git安装与配置

现在你已经对Git有了最基本的了解,现在让我们开始动手开始安装和配置Git环境。Git工具包括Git命令行工具,图形化工具和服务器环境;在我们这个教程中,我们会使用以下软件配置我们的环境:• Windows 操作系统&#xff08…

[认证授权] 6.Permission Based Access Control

在前面5篇博客中介绍了OAuth2和OIDC(OpenId Connect),其作用是授权和认证。那么当我们得到OAuth2的Access Token或者OIDC的Id Token之后,我们的资源服务如何来验证这些token是否有权限来执行对资源的某一项操作呢?比如…

微软发布PowerShell Core第一个版本:支持多平台开发

微软旗下的PowerShell团队正式宣布推出PowerShell Core 6.0,非常诡异的是这明明是Core的第一个版本,但是却用了一个6.0后缀的版本号。“这是我们对PowerShell做出的最大最重要的改变!”微软技术研究员兼PowerShell创始人Jeffrey Snover在Twit…

.NET Core单文件发布静态编译AOT CoreRT

.NET Core单文件发布静态编译AOT CoreRT,将.NET Core应用打包成一个可执行文件并包含运行时。支持Windows, MacOS and Linux x64 w/ RyuJIT codegen。示例项目:https://github.com/dotnet/corert/tree/master/samples/WebApi下面来实际体验。首先确保安装…

2019纪中暑假游记+总结

Travels总篇\texttt{Travels总篇}Travels总篇 7/4\texttt{7/4}7/4 下午才去纪中,早上就一大早和同学出去玩,看了蜘蛛侠然后到3点多才出发。 因为走南沙大桥所以很快就到了(具体有多快忘了,反正路上一点都不塞车)。就愉快的去整理宿舍洗个早…

使用xUnit为.net core程序进行单元测试(上)

一. 导读为什么要编写自动化测试程序(Automated Tests)?可以频繁的进行测试可以在任何时间进行测试,也可以按计划定时进行,例如:可以在半夜进行自动测试。肯定比人工测试要快。可以更快速的发现错误。基本上…

select2删除选中项,allowClear设置

转载自 select2删除选中项,allowClear设置 在使用select2过程中,有时候需要删除我们选中的选项,如下图: 这时候就需要设置select2的allowClear属性了。 有两种方法: 第一种: 直接用select2定义的一个c…

LeetCode算法总结-回溯法与深度优先搜索

转载自 LeetCode算法总结-回溯法与深度优先搜索 回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就…

入门干货之用DVG打造你的项目主页-Docfx、Vs、Github

由于这三项技术涉及到的要点以及内容较多,希望大家有空能自己挖掘一下更多更深的用法。0x01、介绍VS,即VS2017以及以上版本,宇宙最好的IDE,集成了宇宙最有前景的平台,前阶段也支持了宇宙最好的语言。Github&#xff0c…

ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自带的IOC容器)

前言本文主要是详解一下在ASP.NET Core中,自带的IOC容器相关的使用方式和注入类型的生命周期.这里就不详细的赘述IOC是什么 以及DI是什么了.. emm..不懂的可以自行百度.正文今天我们主要讲讲如何使用自带IOC容器,emm..虽然自带的功能不是那么强大,但是胜在轻量级..而且..不用引…

P4130,jzoj1214-[NOI2007]项链工厂【线段树】

正题 题目链接:https://www.luogu.org/problemnew/show/P4130 题目大意 一个环形颜色珠子链,位置(注意不是上面的珠子)从最上顺时针下来位置依次标号1∼n1\sim n1∼n。 然后要求支持以下操作 Rk:R\ k:R k:将所有珠子顺时针旋转kkk个。F:F:F:将所有珠子以111向下翻…

LeetCode常用算法模式大厂面试题整理

转载自 LeetCode常用算法模式&大厂面试题整理 文章目录 1、滑动窗口 2、双指针 3、快慢指针 4、合并区间 5、循环排序 6、就地反转链表 7、堆-优先队列问题 8、Top K 9、归并 10、单调栈 11、回溯法 BATJ等大厂面试真题汇总 1、滑动窗口 1 一个左指针,一个右…