GIT学习(一)_GIT简介
2016-07-13 18:35
253 查看
一、GIT发展介绍
GIT是一个版本控制系统。GIT的作者是Linux之父Linus的第二个作品,是为了解决软件开发过程中,版本控制问题而诞生的。
版本控制(Revision control)
版本控制通过文档控制记录程序各个模组的修改情况,为每次改动设置唯一ID标识。这种方法是工程图(enginnering drawings)维护的标准做法。它伴随工程图的诞生一直到定型。一种简单的版本控制形式。例如,第一次绘制的工程图版本信息为“A”,第二次又改动后的版本信息为“B”,每次修改之后都会产生一个版本号。如果在一个多人协作的开发之中没有引入任何版本控制,只是靠人为的进行控制,那么最大的问题是代码冲突。比如,出现大量代码覆盖。对于这样的版本控制工具,最早的是CVS,开源免费,效率不高。
CVS(Concurrent Version System)
CVS版本控制系统是一种GNU软件包,主要用于多人开发环境中的代码维护。CVS用copy-modify-merge(拷贝-修改-合并)变化表支持对文件的同时访问和修改。CVS是基于客户端/服务器(也就是通常所说的B/S)的行为使其可容纳多个用户同时工作。SVN(Subversion)
CVS作为最早的开源免费的集中式版本控制系统,在发展工程中,本身的不足也是制约其发展的关键因素。由于CVS自身设计的问题,会造成提交文件不完整,版本库莫名其妙损坏的情况。在CVS之后出现在大众视线的就是修正了诸多CVS不足之后的SVN,目前使用最广泛的集中式版本控制系统。CVS和SVN都是在Linux下发展起来的一种技术,SVN 是为了弥补CVS的不足而诞生的技术。CVS和SVN使用都有一个前提:必须链接网络后才可以使用,如果没有网络,那么就无法使用。
GIT
GIT(the stupid content tracker,傻瓜式内容跟踪器)。是目前为止最好用的分布式版本控制工具,同时也是免费开源的,用于敏捷高效地处理任何或大或小的项目。分布式相对于集中式的最大区别在于开发者可以提交到本地,每个开发者机器上都是一个完整的数据库。GIT的主要特点
从服务器上克隆数据库(包括代码和版本信息)到单机上;
在自己的机器上创建分支,修改代码;
在单机上自己创建的分支上提交代码;
在单机上合并分支;
创建一个分支,把服务器上最新版的代码fetch下来,然后跟自己的主分支合并;
生成补丁(patch),把补丁发送给主开发者;
看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,就通过。
一般开发者之间解决冲突的方法,开发者之间可以使用pull命令解决冲突,解决完冲突之后再向主开发者提交补丁。
GIT与SVN的区别
Git是分布式版本控制系统,而SVN是集中式的。分布式与集中式的最大区别在于不需要集中式的版本库,每个人都可以工作在通过克隆建立的本地版本库中。换言之,每个人都具有一个完整的版本库Git版本库的是按照元数据存储的,而SVN则是按照文件存储。具体而言就是,通过Git克隆的本地版本库下的.git目录只会存储元数据,而SVN仓库下的.svn目录会包含原始文件的拷贝
Git的版本号的全球唯一的哦。Git使用了SHA-1(40个十六进制数字)算法保证了版本号的全球唯一,Linus指出使用SHA-1算法的目的是保证数据的完整性。理论上对其进行哈希碰撞(hash collision,不同的两块数据有相同的hash值)的攻击可以在2^51(2的51次方)左右的次数内实现。也就是两个版本号冲突的几率是1/2^51
GIT的分支管理
在不同的分支上可以进行同一项目的修改,并且利用合并分支快速的提交项目。二、安装GIT
取得GIT,下载地址:https://git-scm.com,下载安装根据自己的电脑系统选择合适的版本,根据提示完成安装,安装完成之后打开cmd窗口,进行测试,输入git,如图所示代表成功。
安装完成之后就可以使用了。。。。
相关文章推荐
- 学习Java的第一步是安装好JDK
- 【声明】前方不设坑位,不收费!~ 我为NET狂官方学习计划
- MUI移动端页面跳转
- 【ICON查看器】轻量级图标测试工具ICON STRIKE:快速主屏查看
- fmdb数据库操作
- IP 命令详解
- 关于接口设计的一些思考
- 一年了---胡思乱想
- php网站大数据高并发处理方法简单总结
- Chrome开发者工具不完全指南(二、进阶篇)
- android杀死进程
- 500 Lines or Less——可视化编程工具(Blockcode)
- 给Python爱好者推荐一本好书
- 利用Images.xcassets来设置启动页图片
- 干货分享,iOS日志颜色分类 丰富你的控制台 简直不要太好用 墙裂推荐
- mac下adb命令大全
- 支持向量机SVM
- (原创)TCPIP的二次封装,可同时多客户端收发数据
- 过滤器学习笔记
- Android4.2中应用接收开机广播(android.intent.action.BOOT_COMPLETED)失败的原因