Git 学习(一)简介及安装
Git 简介及安装
Git是目前世界上最先进的分布式版本控制系统(没有之一)。它的诞生也颇具传奇,Linux创始人Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!有兴趣的话,可查看 Git的诞生
什么是版本控制?
版本控制(Revision control)是一种软体工程技巧,籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新。
版本控制系统/软件提供完备的版本管理功能,用于存储、追踪目录(文件夹)和文件的修改历史,是软件开发者的必备工具,是软件公司的基础设施。版本控制软件的最高目标,是支持软件公司的配置管理活动,追踪多个版本的开发和维护活动,及时发布软件。
常用的版本控制系统/软件有 VSS、CVS、SVN 以及 Git 等。简介详见 百度百科
什么是分布式?
分布式版本控制 (DVCS) 是一种不需要中心服务器的管理文件版本的方法,但是它也可以使用中心服务器。更改可以被合并到 DVCS 的任何其他用户的系统中,因此可以实现非常灵活的工作流。
DVCS 的两个主要优点是:它比集中的版本控制更灵活,因为它除了支持传统的(集中式)工作流,还支持其他各种工作流;它比集中式服务器快得多,因为大多数操作在客户机本地进行,而不需要网络操作。
为什么选择 Git ?
实际上,相对于 CVS、SVN 等主流版本控制软件,Git 的学习成本会更高。SVN等的图形操作界面,对于用惯 Windows 系统的用户来说,使用和理解上都比较易学。而对于 Git 用户,需要理解更多更复杂的概念,包括文件、快照、工作树、索引、本地资源库、远程资源库、远程、提交、分支和 Stash 等。那相比于 CVS 与 SVN,Git 的优势到底体现在哪里?
第一,Git 底层自行维护的存储文件系统
CVS、SVN 底层采用的为增量式文件系统,如图 1 。增量式文件系统的特点是:当文件变动发生提交时,该文件系统存储的是文件的差异信息。
图 1. CVS、SVN 记录文件内容差异
同样是文件变更提交,Git 底层文件系统存储的则为文件快照,即整个文件内容,并保存指向快照的索引,如图 2 所示。考虑到性能因素,如果文件内容没有发生任何变化,该文件系统则不会重复保存文件,只是简单地保存文件的链接。
图 2. Git 记录整个文件快照
Git 之所以选择这样的底层存储数据结构,主要是为了提高 Git 分支的使用效率。实际上,Git 分支本质上是一个指向索引对象的可变指针,而每一个索引对象又指向文件快照,如图 3 所示。
图 3. Git 分支对应的数据结构
这样一来,创建分支可以瞬间完成,几乎不需要花费太多代价。换句话说,Git 分支是廉价的、轻量级的。我们看看各种 CVS、SVN 项目,分支通常意味着源代码的完整拷贝,其代价是昂贵的、重量级的。而对于大型项目来说,创建各种分支又是十分必要的,这与 Git 鼓励频繁创建与合并分支的理念相吻合。
第二,Git 版本控制系统的设计思想是"去中心化"
传统的 CVS 、SVN 等工具采用的是 C/S 架构,只有一个中心代码仓库,位于服务器端。而一旦由于服务器系统宕机、网络不通等各种原因造成中心仓库不可用,整个 CVS 、SVN 系统的代码检入与检出就瘫痪了。即便考虑到高可用性,通过迁移另一个中心仓库继续代码提交操作,相应的运营维护成本也会随之上升。
为了摆脱对中心仓库的依赖,Git 的初始设计目标之一就是分布式控制管理。我们给出一个样例,如图 4 所示。假如我们成立一个项目组,开发者主要由 Alice、Bob、Clair、David 四名成员组成。其中,除了中心仓库 origin(Git 默认远程仓库名称)之外,每一名成员各自负责一个本地仓库。从分布式的观点来看,David 可看成是 Alice 的远程仓库,反过来也是一样。Git 分布式的设计理念有助于减少对中心仓库的依赖,从而有效降低中心仓库的负载,改善代码提交的灵活性。
图 4. Git 分布式工作示意图
Git 分布式设计思想所带来的另外一大好处是支持离线工作。离线工作的好处不言而喻,对于 CVS、SVN 这种严重依赖网络的 C/S 工具而言,没有了网络或者 VPN ,就意味着失去了左膀右臂,代码检入与检出操作就无法正常进行。而一旦使用 Git ,即便在没有 WIFI 的飞机或者火车上,照样可以频繁地提交代码,只不过先提交到本地仓库,等到了网络连通的时候,再上传到远程的镜像仓库。
有关 Git 更多详细信息,请参考 Git 官方网站:http://git-scm.com/
安装Git
廖雪峰的这篇博文已经很好地说明了如何 安装Git,请根据不同的系统安装Git。
P.S 安装验证,Linux 下 输入 git;Windows cmd 下 git
Git Bash
Git Bash 窗口如下, git help 可以很方便的查阅帮助文档,是以 html 文档形式来呈现的。
Windows系统下,有不少方便的工具,以下两个可选择性安装,但建议还是直接使用 Git Bash 命令行操作。
TortoiseGit
Window 的用户,对于习惯 Tortoise 风格的用户,可以选择 TortoiseGit 安装包,安装后的右键截图如图 8 所示。TortoiseGit 的下载地址为:http://code.google.com/p/tortoisegit/ 或者 http://download.tortoisegit.org/
从 Windows 上安装“右键”Git 工具——TortoiseGit
Eclipse 插件——EGit
使用的 Eclipse 开发者,可以选择 Eclipse 插件——EGit。官方地址为:http://wiki.eclipse.org/EGit
EGit目前还是一个处于孵化期间的项目,因此EGit 0.7.1并没,同 时也无法保证没有bug(当然EGit 0.7.1是经过严格的测试之后才发布的正式版本),但对于笔者这样的用户来说能满足基本的功能并且可以方便的享受Eclipse整合git功能即可。同 时作者表示在Eclipse下一个发行版Eclipse Helios到来之际将发布EGit 0.8,届时EGit的功能将更加强大,同时提供更多的新特性支持。
在线安装:Eclipse - help -Install new software ... Add http://download.eclipse.org/egit/updates-3.6.2/
OK 后如下
勾选并 Next,安装完成后,应会提示重启 Eclipse
安装完成后,需要配置,对应使用博主还没操作过,可参考:http://www.cnblogs.com/draem0507/archive/2013/01/14/2859954.html
Git 学习(一)简介及安装的更多相关文章
- Git学习笔记--历史与安装(一)
声明:今天起学习Git,第一篇学习笔记主要借鉴廖雪峰先生的个人博客,以及自己的实践所得. “本教程只会让你成为Git用户,不会让你成为Git专家”——引自廖雪峰博客. 一.Git简介 Git是目前世界 ...
- Git学习教程一之安装Git&&&本地仓库建立
一. 安装git 1:在Windows上使用Git,可以从Git官网直接下载安装程序,(网速慢的同学请移步国内镜像),然后按默认选项一直安装即可. 2:安装完成后,在开始菜单里找到“Git”-> ...
- Git 学习(一)安装 Git
这里写自定义目录标题 这一章介绍怎么安装 Git 大家都是开发老司机,就不简介什么是 Git 了,直接开花. 在 Linux 上安装Git 在 Windows 上安装 Git 初次使用 Git 前的配 ...
- Git版本管理的简介与安装[一]
标签(linux): git 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 git简介 很多人都知道,Linus在1991年创建了开源的Linux,从此,Lin ...
- git学习之简介(一)
一.前言 史上最浅显易懂的Git教程! 为什么要编写这个教程?因为我在学习Git的过程中,买过书,也在网上Google了一堆Git相关的文章和教程,但令人失望的是,这些教程不是难得令人发指,就是简单得 ...
- solr 学习之简介及安装
一.solr简介 Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展,并对索 ...
- Redis 学习之简介及安装
一.redis简介 Redis是一个开源的,先进的key-value存储.它通常被称为数据结构服务器,因为键可以包含字符串.哈希.链表.集合和有序集合. 支持的数据类型:string(字符串).lis ...
- GIt学习第一天之安装和版本库创建
搬运自 ‘廖雪峰的官方网站’ 1.git安装 官网下载地址:https://git-scm.com/download/win 百度网盘下载地址:https://pan.baidu.com/s/1k ...
- 大数据技术之_11_HBase学习_01_HBase 简介+HBase 安装+HBase Shell 操作+HBase 数据结构+HBase 原理
第1章 HBase 简介1.1 什么是 HBase1.2 HBase 特点1.3 HBase 架构1.3 HBase 中的角色1.3.1 HMaster1.3.2 RegionServer1.3.3 ...
- redis学习——day01_redis简介与安装
一.Redis 简介 1.1 Redis是什么 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统.Redi ...
随机推荐
- memcache和redis的对比
1.memcache a.Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站 ...
- U43597 积木
题目背景 小 XX 感到很无聊,从柜里翻出了小时候玩的积木. 题目描述 这套积木里共有 \(n\) 块,每块积木都是一个长方体. 小 X 想知道这些积木拼成一个积木塔(不必每一块 积木都使用). 所谓 ...
- POJ 3308
http://poj.org/problem?id=3308 考虑答案不是乘积而是和的做法, 因为对于每一个伞兵我们要么在这行内安装大炮消灭它 要么在这列中安装大炮消灭它,所以容易看出这是一个最小边覆 ...
- mysql设置服务器编码
今天写java程序的时候出现了插入mysql数据中文乱码问题,确定数据库和表的编码都已指定utf-8.百度后得知mysql安装后需设置服务器编码,以下是解决方法(ubuntu; mysql 5.6.2 ...
- C# Merge into的使用详解
Merge是一个非常有用的功能,类似于Mysql里的insert into on duplicate key. Oracle在9i引入了merge命令, 通过这个merge你能够在一个SQL语句中对一 ...
- nutch 抓取需要登录的网页
题记:一步一坑,且行且珍惜 最近接到任务,要利用nutch去抓取公司内部系统的文章,可是需要登录才能抓到.对于一个做.net,不熟悉java,不知道hadoop,很少接触linux的我,这个过程真是艰 ...
- 9. Spark Streaming技术内幕 : Receiver在Driver的精妙实现全生命周期彻底研究和思考
原创文章,转载请注明:转载自 听风居士博客(http://www.cnblogs.com/zhouyf/) Spark streaming 程序需要不断接收新数据,然后进行业务逻辑 ...
- Ionic-wechat项目边开发边学(一):环境搭建和创建一个项目
之前学AngularJS,教程过了一遍觉得很简单,但真正写几个Demo就错误百出,一个小小的功能要折腾很久.所以这次学Ionic,准备以开发一个项目为切入点去学,那么问题来了,开发什么项目呢? 纠结了 ...
- 洛谷——P1292 倒酒
P1292 倒酒 题目描述 Winy是一家酒吧的老板,他的酒吧提供两种体积的啤酒,a ml和b ml,分别使用容积为a ml和b ml的酒杯来装载. 酒吧的生意并不好.Winy发现酒鬼们都非常穷.有时 ...
- oracle Lower Upper length substr
字符函数: Lower(char):将字符串装换为小写的格式 Upper(char):将字符串装换为大写的格式 length(char):返回字符串的长度 substr(char,m,n):从m开始截 ...