是时候来系统的介绍一下Git了。毫无疑问,Git是目前最优秀的分布式版本控制工具,木有之一,可是我见到的很多人还是不会用,我的老东家每天忍受着SVN带来的痛苦,却迟迟不愿切换到Git上,个人感觉,许多中小公司不用Git,不是因为Git不好,而是他们的项目经理不会用(不喜勿喷)。

OK,那么今天我们就先来简单介绍下Git的发展史以及Git的优点,然后再来看看Git的安装。

1.Git诞生记

Git诞生于2005年4月,由Linux的作者Linus Torvalds花费了两周的时间用C写了一个分布式版本控制系统,这就是Git1.0,大牛写代码就是这么666666。其实早在Git之前,这个世界就已经有一些非常流行的版本控制工具(VCS),比如CVS,SVN,ClearCase等,然而这些工具要么运行慢,要么要收费,都不是Linus Torvalds的菜,当时,有一个公司叫做BitMover,该公司有一款产品叫做BitKeeper,这是一个分布式版本控制工具,但是这是收费的,不过这是一个有情怀的公司,老板Larry说服Linus Torvalds使用BitKeeper来管理Linux内核源码,于是,在2002到2005年之间,Linux内核开发团队一直使用BitKeeper来管理Linux源码。可是在开发的过程中,Linus Torvalds有一个叫做安德鲁·垂鸠的小伙伴不安分了,他写了一个简单程序,可以连接BitKeeper的存储库,BitKeeper著作权拥有者拉里·麦沃伊认为安德鲁·垂鸠对BitKeeper内部使用的协议进行逆向工程,决定收回无偿使用BitKeeper的授权。合作无法继续,于是Linus Torvalds决定自己开发一套分布式版本控制工具,就是Git,至于这个分布式版本控制工具为什么叫Git,Linus Torvalds并没有给出一个让所有人满意的解释,倒是很多开发者一直尝试去给Git一个合理的解释,常见的一个解释就是Global Information Tracker(中文译作全局信息追踪器)。如果当年不是BitMover公司的逼迫,估计我们还不一定见到这么优秀的分布式版本控制工具。值得一说的是,今年5月11日(2016年5月11日)BitKeeper宣布以Apache 2.0许可证开源(新闻链接http://www.solidot.org/story?sid=48171),我很好奇BitKeeper宣布开源的时候他的老板心中是何感受?

2.Git的优势

Git一出世立马就成为最流行的分布式版本控制工具,2008年4月,GitHub正式上线,GitHub是一个利用Git进行版本控制,专门用于存放代码与内容的共享虚拟主机服务,GitHub上线之后,许多开源项目都移植到GitHub上了,不管你从事那门语言的研发,都会在GitHub上找到你需要的项目吧!OK,说了这么多,接下来我们也该说说Git这个分布式版本控制工具的优势了。Git主要有以下几个优势:

1.与传统的集中式版本控制工具不同,分布式版本控制工具不需要联网就可以工作,每台电脑都是一个完整的版本仓库。

2.Git可以胜任上万人的开发规模,这个大家看看GitHub中的开源项目就知道了,不需要我多说。

3.性能优异。我们前面说过Linus Torvalds之所以不愿意使用CVS、SVN等版本控制工具就是因为这些工具的性能太差。所以Linus Torvalds在开发Git时就决定要革除积弊,确保Git的运行效率。笔者在上家公司做开发时,深受SVN的毒害,但是公司还是不愿意迁移到Git上,我猜测是由于项目经理不会用。

4.保证项目的安全。我们知道,在SVN之前还有一个集中式版本控制工具叫做CVS,这个CVS有一个问题,就是你的文件有的时候会莫名其妙的丢失,做开发的各位筒子都知道,如果你的项目中突然有一个文件不见了,你不出一身汗才怪。所以,Git使用SHA1这种通用的加密散列函数来对数据库中的对象进行命名,从而来确保文件的安全。

5.好用的分支。用过Git的人都知道Git中的分支用起来有多么爽,分支在我们的项目中用的非常普遍,可是SVN虽然也有分支,但是却不能像Git用的这么爽。这个做过项目的筒子都知道。我们到后文会给大家详细介绍分支的用法。

OK,Git的优势还有很多种,这里我就不再一一列举了,有兴趣的大家自行搜索。。。。。。。。。。。。。。

3.Git的安装

作为一个屌丝码农,我的本子还是windows,不过我的本本装了双系统,所以我这里就只给大家演示一下Windows下如何安装Git以及Ubuntu下如何安装Git。

1.windows7安装Git

windows安装Git整体上来说有两种解决方案

A:安装Cygwin(下载地址http://cygwin.com/)用来模拟Linux运行环境,但是Cygwin大配置非常麻烦,容易出错,所以一般不推荐这种方式。

B:安装独立的Git,也就是msysGit(下载地址https://git-for-windows.github.io/),这就是一个简单的exe文件,一路next就安装成功了。安装成功后,在你的开始菜单中找到Git Bash,如下:

点击Git Bash,点击运行,输入git --version查看git版本号,运行界面如下:

2.Ubuntu安装Git

ubuntu安装Git就是一句话:

sudo apt-get install git

早期的Linux版本直接运行下面的代码即可:

sudo apt-get install git-core

安装成功之后,输入git --version查看git版本号,运行界面如下:

OK,今天我们就介绍这么多,下篇博文我们再来介绍版本仓库的创建以及文件提交等等。

以上。

Git使用完全解析(一)的更多相关文章

  1. Git原理入门解析

    前言: 之前听过公司大佬分享过 Git 原理之后就想来自己总结一下,最近一忙起来就拖得久了,本来想塞更多的干货,但是不喜欢拖太久,所以先出一版足够入门的: 一.Git 简介 Git 是当前流行的分布式 ...

  2. git 常见命令解析

    转载自http://www.rainkong.net/post/git-image.html 之前用的都是svn ,git还是要了解的,万一哪天要用了呢

  3. Git——常用场景解析

    总结:本篇文章从初识GitHub.Git,实践GitHub的五种常用场景,分别是:git for windows安装,git配置,克隆远程代码到本地,上传本地代码到远程以及Git的常用指令.相信Jam ...

  4. Git show-branch显示提交信息

    git中查看日志,我们用的比较多的就是 git log 以及带一些参数,如: 以一行显示提交日志: $ git log --pretty=oneline 显示最后的几次提交日志: $ git log ...

  5. 使用 git 进行项目管理(只管理代码,不管理项目配置)

    使用Git进行项目管理 1. 从服务器pull项目,本地还原工程 从服务器拉取仓库及分支 git clone git@github.com/helloWorld.git git branch -a g ...

  6. sublime 集成git插件,及git常用命令

    以前用了很久的totoiseSVN,显然不够高大上,开发界的版本装x利器还得是git.然而git的命令行对没怎么用过linux的人可能觉得还不如用gitGUI,可是当你知道sublime可以集成git ...

  7. git命令详解( 七 )

    此为git命令详解的第七篇 这章我们可以来逐渐揭开 git push.fetch 和 pull 的神秘面纱了.我们会逐个介绍这几个命令,它们在理念上是非常相似的.   git push的参数 git ...

  8. Git rebase使用

    目录 rebase的优点和缺点 分支内合并多个commit为一个新commit使用: 命令: 使用: 将其他分支合并到主分支,表现为线性: 将其他分支多个commit合并到主分支,并形成一个新comm ...

  9. 如果非得了解下git系统... - 实践篇

    git的定义是一个内容寻址文件系统.内容.寻址.文件.系统,该来的总会来的… 本文旨在通过实践来介绍.git文件夹中的目录及文件功能,属git基础知识.但在此基础上可解决各git使用过程中可能遇到的问 ...

随机推荐

  1. ruby quiz The Solitaire Cipher

    solitaire cipher:http://en.wikipedia.org/wiki/Solitaire_(cipher) https://www.schneier.com/solitaire. ...

  2. 【HDOJ】1086 You can Solve a Geometry Problem too

    数学题,证明AB和CD.只需证明C.D在AB直线两侧,并且A.B在CD直线两侧.公式为:(ABxAC)*(ABxAD)<= 0 and(CDxCA)*(CDxCB)<= 0 #includ ...

  3. 【Pyhton Network】使用poll()或select()实现非阻塞传输

    通常情况下,socket上的I/O会阻塞.即除非操作结束,否则程序不会照常进行.而以下集中情况需要在非阻塞模式下进行:1. 网络接口在等待数据时是活动的,可以做出相应:2. 在不使用线程或进程的情况下 ...

  4. wcf教程

    WCF Tutorial WCF stands for Windows Communication Foundation. It is a framework for building, config ...

  5. QQ输入法个人设置

    常用 按键 外观 词库 账户 高级

  6. Axis2联接WCF(比较完整的版本)

    Axis2联接WCF(比较完整的版本) 分basicHttpBinding和wsHttpBinding两种情况: 一.basicHttpBinding比较简单一点,先来看看它所要求的HTTP包:POS ...

  7. DNS----域名解析系统

    DNS就是域名解析系统,它可以将IP转换成域名,也可以将域名转换成IP 1. 安装DNS服务       开始—〉设置—〉控制面板—〉添加/删除程序—〉添加/删除Windows组件—〉“网络服务”—〉 ...

  8. C#调用C++的DLL函数另一则(delegate) z

    使用DLLImport进行导入函数的事. C#调用C++的函数其实不止这一种方法, 还有一种方法是用delegate申明函数委托进行调用,这种方法略显麻烦,但是可以进行回调并应用指针. 在C#中,首先 ...

  9. HDU5669 Road 分层最短路+线段树建图

    分析:(官方题解) 首先考虑暴力,显然可以直接每次O(n^2) ​的连边,最后跑一次分层图最短路就行了. 然后我们考虑优化一下这个连边的过程 ,因为都是区间上的操作,所以能够很明显的想到利用线段树来维 ...

  10. 最小生成树之kruskal方法实现 (java)

    今天是个阴天,下了点雨,work ......... 步骤:将所有边排序,然后不断从小到大加上边,这个过程最重要的是避免环的产生,此处用并查集.(nyoj 38) package 最小生成树; imp ...