git整理(一)

Git

Git简介

git是世界上最先进的分布式版本控制系统
很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。

Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!

你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。

不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。

安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。

Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:

Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。

Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等

集中式和分布式比较

集中式:代表(svn)所有人工作的时候代码版本都集中 放在中央服务器中,都由中央服务器进行版本管理。同时要求工作时必须联网,从中央服务器进行上传和下载。
分布式:代表(git)分布式版本控制系统,没有中央服务器,每个人的电脑上都是一个完整的版本库。相比于集中式,分布式更加安全。当然分布式在公司中小组多个成员进行开发的时候,也需要有一台电脑充当中央服务器,但是他的作用不同于集中式的中央服务器,仅仅只作用于小组成员之间的“交换”。

git:本地有与"中央仓库"一样的代码及历史记录的信息,一旦服务器有问题,那么找一个最新的本地代码同步上去后,之前所有的提交历史记录还可以看到。
svn:所有人都将代码提交至“中央仓库”,一旦服务器有问题,就算找到一个最新的代码上去,也是只能以当前时间为节点作为新的项目去使用,之前所有的提交历史记录无法看到,对于处理历史遗留问题并不友好。

Git本地仓库包含代码库还有历史库,在本地的环境开发就可以记录历史 而SVN的历史库存在于中央仓库,每次对比与提交代码都必须连接到中央仓库才能进行。
这样的好处在于: 1、自己可以在脱机环境查看开发的版本历史 2、多人开发时如果充当中央仓库的Git仓库挂了,任何一个开发者的仓库都可以作为中央仓库进行服务(不过一般不会这样设置)

Windows安装Git

直接从官网下载,然后傻瓜式安装(最好不要有中文路径名)
安装完成后打开Git Bash
要在git上面输入本机使用的名字和邮箱地址,就类似与注册
$ git config --global user.name "你注册的名字"
$ git config --global user.email "你的邮箱地址"

创建版本库

所谓的版本库就是版本的仓库,repository,就类似于maven的仓库,,这个版本库里的所有文件都可以被git管理起来,对文件进行的读写操作,Git都可以跟踪

方法一

#创建一个文件夹
$ mkdir learn1
#进入刚创建的文件夹
$ cd learn1
#查看当前路径
$ pwd
/c/Users/Administrator/learn1
#通过git init命令把这个目录变成git可以管理的仓库
$ git init
Initialized empty Git repository in C:/Users/Administrator/learngit/.git/

方法二

找到一个位置,鼠标右键点击Git Bash Here
#创建一个文件夹
$ mkdir learn2
#此时刚点进入的位置就已经创建了一个learn2的文件夹
#通过git init命令把这个目录变成git可以管理的仓库
$ git init
Initialized empty Git repository in C:/rep/.git/

接下来就可以在里面写一些文件了,linux的指令也可以在这里使用


往本地仓库中添加文件

#把刚写好的文件传入到本地仓库中
$ git add a.txt
#没有显示错误说明成功
#查看当前状态(可省略)
$ git status
On branch master

No commits yet

Changes to be committed:
(use "git rm --cached <file>..." to unstage)
      new file:   a.txt
#此时只是添加至stage 并没有提交到本地仓库
#提交至本地库还需要commit一下
$ git commit -m "第一次提交"
[master (root-commit) 77c2b2c] 第一次提交
1 file changed, 1 insertion(+)
create mode 100644 learn2/a.txt
#注意-m 后面一定要加备注信息,如果在公司中不加,可能挨熊
#继续添加代码,提交就重复刚刚的步骤

 

猜你喜欢

转载自www.cnblogs.com/liudongshuai/p/11564741.html