标签:
集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。
那分布式版本控制系统与集中式版本控制系统有何不同呢?首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
正常安装好git之后可以$git --version 查看 git的版本号是否安装成功
安装完成之后 进行最后一步的设置
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?
这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。
小技巧
$ git clear 清除一下当前的界面
查看你设置的 用户名和邮箱
$ git config user.name
$ git config user.email
返回上一级目录 cd ..
ls 可以看到当前目录下的所有文件 文件夹在前 文本在后
A) 找一个合适的地方创建一个空目录
pwd 命令用于显示当前目录(在window下面 确保不能出现中文 否则就会出现呵呵的问题)
B) 通过 git init 把这个目录变成Git可以git可以管理的仓库
瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git
的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。(如果你没有看到 .git目录 可以直接使用 ls -ah命令就能看见)
现在我们编写一个 first.txt文件 (必须要放在git 仓库下)
第一步 用 git add 告诉Git 把文件添加到仓库:
$ git add readme.txt
第二步 git commit 告诉 Git 把文件提交到仓库
$ git commit -m "里面是本次提交的说明 可以输入任意内容"
commit 可以一次提交很多文件 你可以多次add不同的文件。
接下来 如果我们要修改first.txt文件 。 改完之后 可以$ git status 查看结果。
上面的命令告诉我们 first.txt被修改了 但是没有准备提交的修改。如果我们不清楚修改了readme.txt 使用$ git diff这个命令查看修改。
git diff
顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,可以从上面的命令输出看到,我们在第一行添加了一个“distributed”单词。知道了对readme.txt作了什么修改后,再把它提交到仓库就放心多了。之后再执行 提交修改和提交新文件是一样的两步,第一步是git add
:同样没有任何输出。在执行第二步git commit
之前,我们再运行git status
看看当前仓库的状态:
git status 告诉我们 将要被提交包括first.txt 。最后在查看。记住 时常查看 git status的状态。
如果在团队协作的时候 你要查看你自己或者别人提交的日志可以直接 使用$ git log --author="shiyao" 就可以看到我执行的操作。
像这样,你不断对文件进行修改,然后不断提交修改到版本库里,就好比玩RPG游戏时,每通过一关就会自动把游戏状态存盘,如果某一关没过去,你还可以选择读取前一关的状态。有些时候,在打Boss之前,你会手动存盘,以便万一打Boss失败了,可以从最近的地方重新开始。Git也是一样,每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit
。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit
恢复,然后继续工作,而不是把几个月的工作成果全部丢失。
$ git log 命名显示最近到最远的提交日志 我们可以看到所有提交。 如果闲东西太多 可以加上 --petty=oneline参数
接下来 怎么会退到上一版本呢?
A)首先 要让Git知道当前版本是哪个版本 在Git中 用HEAD表示当前版本 上一版本就是HEAD^ 上上一版本就是HEAD^^ 如果100写100个^ 写不过来 所以写成HEAD~100
$ git reset --hard HEAD^
查看里面的内容使用 $ cat first.txt;
此时我们可以使用$ git log 查看版本库的状态。
在没有关闭命令行的情况下 你还可以回到上面一个版本。
Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD
指针,当你回退版本的时候,Git仅仅是把HEAD从指向append GPL
标签:
原文地址:http://www.cnblogs.com/syomm/p/5650748.html