Git使用完全解析(一)
是时候来系统的介绍一下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使用完全解析(一)的更多相关文章
- Git原理入门解析
前言: 之前听过公司大佬分享过 Git 原理之后就想来自己总结一下,最近一忙起来就拖得久了,本来想塞更多的干货,但是不喜欢拖太久,所以先出一版足够入门的: 一.Git 简介 Git 是当前流行的分布式 ...
- git 常见命令解析
转载自http://www.rainkong.net/post/git-image.html 之前用的都是svn ,git还是要了解的,万一哪天要用了呢
- Git——常用场景解析
总结:本篇文章从初识GitHub.Git,实践GitHub的五种常用场景,分别是:git for windows安装,git配置,克隆远程代码到本地,上传本地代码到远程以及Git的常用指令.相信Jam ...
- Git show-branch显示提交信息
git中查看日志,我们用的比较多的就是 git log 以及带一些参数,如: 以一行显示提交日志: $ git log --pretty=oneline 显示最后的几次提交日志: $ git log ...
- 使用 git 进行项目管理(只管理代码,不管理项目配置)
使用Git进行项目管理 1. 从服务器pull项目,本地还原工程 从服务器拉取仓库及分支 git clone git@github.com/helloWorld.git git branch -a g ...
- sublime 集成git插件,及git常用命令
以前用了很久的totoiseSVN,显然不够高大上,开发界的版本装x利器还得是git.然而git的命令行对没怎么用过linux的人可能觉得还不如用gitGUI,可是当你知道sublime可以集成git ...
- git命令详解( 七 )
此为git命令详解的第七篇 这章我们可以来逐渐揭开 git push.fetch 和 pull 的神秘面纱了.我们会逐个介绍这几个命令,它们在理念上是非常相似的. git push的参数 git ...
- Git rebase使用
目录 rebase的优点和缺点 分支内合并多个commit为一个新commit使用: 命令: 使用: 将其他分支合并到主分支,表现为线性: 将其他分支多个commit合并到主分支,并形成一个新comm ...
- 如果非得了解下git系统... - 实践篇
git的定义是一个内容寻址文件系统.内容.寻址.文件.系统,该来的总会来的… 本文旨在通过实践来介绍.git文件夹中的目录及文件功能,属git基础知识.但在此基础上可解决各git使用过程中可能遇到的问 ...
随机推荐
- 【HDOJ】2062 Subset sequence
这道题目非常好,饶了点儿圈子.我的思路是,先按照组排列.例如,1 2 31 2 2 1 3 11 2 3 2 1 3 ...
- 浏览器编辑HTML
运行效果: 浏览器编辑HTML // test.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...
- hdu4597Play Game(记忆化)
链接 通化邀请赛的题 貌似不怎么难 记忆化DP 状态方程类似于2维的 只是变成了4维 每次有四种方向去搜 取最棒的 判断好边界条件 #include <iostream> #includ ...
- 屯题50AC纪念
从2.1起开始屯题,一直弄到现在才完成了一发50题的目标,实在太弱 (当然之间事比较多,还是挺不容易的) 不过总算是完成了一个小的目标了 接下来两周要进行小高考最后冲刺了,所以我大概不会再怎么刷题了 ...
- BZOJ_1617_[Usaco2008_Mar]_River_Crossing_渡河问题_(动态规划)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1617 FJ要把\(n\)头奶牛用船运到河对岸.FJ自己在船上要用\(m\)时间,如果运送\(i ...
- BZOJ_3527_[ZJOI2014]_力_(FFT+卷积)
描述 题面: http://wenku.baidu.com/link?url=D2ORnA9xjgSxa2GlYLB7gGiYgBcXsy-Aw0kVYTjTE-iYhH1s7h8xXGmnaMwl3 ...
- java 写的能够响应浏览器请求的 http 服务器
这只是一个小Demo,话几十分钟搞出来的. 不废话先上代码. 首先是服务端的 package com.cnryb; import java.io.IOException; import java.io ...
- 在C#中设置打印机纸张大小
using System.Drawing.Printing.PrintDocument using System.Drawing.Printing.PrinterSettings.PaperSizeC ...
- seleniumRC启动及浏览器实例配置
一.firefox浏览器实例配置 1.启动用户配置文件管理器 重要:在启动用户配置文件管理器之前,Firefox必须完全关闭. 1)按 support.cdn.mozilla.net/medi ...
- Nginx配置中运行与启动的详细介绍【转】
原文:http://developer.51cto.com/art/201003/190944.htm 我们在进行Nginx配置的时候会出现很多不明白的地方,其实有些时候只要换一个思维的方式就能找多你 ...