Git详解
目前市面上的版本控制工具,主要为集中式的版本控制和分布式的版本控制工具两种。
Git概述
集中式版本控制
集中式的版本控制以SVN为代表,它有一个中央服务器控制所有的版本管理,其他所有的终端可以对这个中央库进行操作,中央库保证版本的唯一性。
这样的方式具备一定的风险,如果中央服务器被毁坏,所有的项目版本控制就完蛋,而且终端不论是提交修改还是获取更新都需要不断与服务器进行通信,一旦网络出现故障,一切都很难再继续操作。
因此,集中式的版本控制工具的劣势如下:
- 容灾性差
- 通信频繁
分布式版本控制
分布式版本控制的典型就是Git,它跟集中式版本控制最大的区别就是它的终端可以获取到中央服务器的完整信息,就好像制作了一个完整的镜像。
获取各种信息都发生在本地,不需要和服务器进行通信。即使服务器出现故障或被毁,各个终端在本地依然存在完整的备份。
Git核心思想
Git作为分布式的版本控制工具,其核心在于以下几个方面:
分布式:各个Repo都具有完整的镜像,协作中通常会有一台中心服务器,但分布式的思想是Git的重要概念。
快照:Git每次记录的都是完整的Repo信息,不是每个版本之间的差异,这也是Git速度快的原因之一。
状态区:只有掌握了不同状态区中的状态,才能真正了解Git的核心思想。
分支:分支是Git重要的功能之一,利用好分支可以让Git的使用如虎添翼。
Git基本配置
我们在下载和安装好Git后,可以在终端中查看Git的版本信息:
git --version
如果之前使用过Git,可以通过如下命令查看当前Git的配置信息:
git config --list
效果如下图所示:
配置参数的时候可以指定一个配置进行参数设定或者多个参数同时设定:
git config --global --add user.name xxx user.email xxx@xx.com
与Linux设计思想一样,Git也是把所有的配置都保存为文件,在Git项目中的.git隐藏文件夹的config文件中。
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[submodule]
active = .
[remote "origin"]
url = https://gitee.com/xxxx/xxxx.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
这里保存了Git项目的所有配置信息,而个人相关的配置信息都保存在个人配置中。
配置别名Alias
开发者可以根据自己的开发习惯来给一些指令起一个简称或别名以取代原本比较复杂的指令。
git config --global alias.st status
通过上述的配置就可以使用st来取代status指令。
仓库初始化
版本控制就是为了管理代码,代码要放在仓库(Repo)中。在Git中创建仓库有两种方式:
一种是自己创建一个仓库。
一种是创建另一个仓库的clone。
Git init
通过Git init指令可以把一个目录快速设置成Git的代码仓库:
git init
通过上面的指令可以把普通文件目录设置成Git代码仓库。在创建成功后,会在该目录下生成.git隐藏文件夹。
Git clone
Git clone用于clone一个远程仓库到本地,命令如下所示:
git clone http://www.xxx.org/pub/xxx/git/git.git
Git命令
Git包含很多操作的命令,主要有增加、删除、提交、分支管理、标签、信息查看、远程同步以及撤销等。
Git的所有命令可以参考上图,下面列出Git常用命令速查表:
多使用,多练习自然能慢慢的记住,唯手熟尔。(反正我是记不住^_^)