什么是集中式版本控制系统和分布式版本控制系统?
集中式版本控制系统:版本控制集中存放在中央服务器,用的时候先从中央服务器下载到自己的电脑,修改完成后再上传到中央服务器,如CVS SVN。
缺点:必须联网,如果中央服务器坏了,所有人都没法干活了。
分布式版本控制系统:每个人电脑都有一个完整的版本库,如果有一个人的电脑坏了,不影响其他人的电脑工作,安全性能更高。它也有一个中央服务器的电脑用来“交换”大家修改的代码。如Git
优点:不用联网也能工作,强大的分支管理系统。
安装Git
在Linux上安装Git
sudo apt-get install git
在Mac OS X上安装Git
一是安装homebrew,然后通过homebrew安装Git,具体方法请参考homebrew的文档:http://brew.sh/。
第二种方法更简单,也是推荐的方法,就是直接从AppStore安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。
在Windows上安装Git
在Windows上使用Git,可以从Git官网直接下载安装程序,(网速慢的同学请移步国内镜像),然后按默认选项安装即可。
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
安装完成后,还需要最后一步设置,在命令行输入:
$ git config --global user.name"Your Name"
$ git config --global user.email"email@example.com"
创建版本库
$ git init
把文件添加到版本库
第一步,用命令git add告诉Git,把文件添加到仓库:
$ git add readme.txt
第二步,用命令git commit告诉Git,把文件提交到仓库:
$ gitcommit-m"wrote a readme file"
版本回退
在Git中,我们用git log命令查看历史记录
$ git log
如果嫌输出信息太多,看得眼花缭乱的,可以用
$ git log --pretty=oneline
你看到的一大串类似1094adb...的是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,而且你看到的commit id和我的肯定不一样,以你自己的为准。为什么commit id需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。
我们要把当前版本回退到上一个版本,就可以使用git reset命令
$ git reset--hard HEAD^
Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
使用Git回到未来的某个版本
找到那个版本的commit id,于是就可以指定回到那个版本
$ git reset--hard1094a
Git提供了一个命令git reflog用来记录你的每一次命令:
$git reflog