Git 简介
当年教授给我们将git历史的时候,感觉特别有意思,还特崇拜linux之父Linus Torvalds。linux内核开发是来自世界各地的热衷于开源的人士,开始他们使用的版本控制系统是一个商业产品BitKeeper,并免费给linux使用,但由于后期开发人员越来越庞大等等原因,而BitKeeper毕竟是商业产品,终于在2005年与linux内核开源社区结束了合作关系,Linus Torvalds一气之下就自己开发了一款适合linux内核开发管理的版本管理系统Git。现在Linus Torvalds其实很少写代码了,而是将别人提交的代码合并到内核中去,更多时间里,就是在对别人提交的代码说“Yes”或者“No”,或是指导别人该在什么地方进行修改。
Git是分布式版本控制系统的一个完美实现,它与集中式版本控制系统SVN的基本区别如下:
Git是分布式的,而SVN不是
Git和SVN一样有自己的集中式版本库或服务器。但,GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库。Git将内容按元数据方式存储,而SVN是按文件
所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果你把.git目录的体积大小跟.svn比较,你会发现它们差距很大。因为,.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。Git分支和SVN分支的不同
SVN的分支就是版本库中的另外一个目录,而Git的分支却是整个版本库的一个快照,而且可以在同一个工作目录下快速的在几个分支间切换。Git没有一个全局的版本号,而SVN有
SVN的版本号实际是任何一个相应时间的源代码快照。而Git并没有这样的一个全局版本号,这也是Git缺少的最大的一个特征。Git的内容完整性要优于SVN
Git的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
Git的基本工作流程如下:
- 在工作目录中修改某些文件
- 对修改后的文件进行快照,然后保存到暂存区域
- 提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中
Git 具体安装步骤
安装Git服务端
服务器环境为:centos;由于CentOS中yum里没有Git,需要手动安装
首先需要安装git的依赖包
yum install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel
下载git
到官网http://git-scm.com/download 下载最新版本,上传至服务器。或者使用命令:获取git包地址调整为最新的地址,当前最新的版本为2.6.2
wget https://www.kernel.org/pub/software/scm/git/git-2.6.2.tar.gz
解压安装git
执行解压命令:
tar xzvf git-2.6.2.tar.gz
进入git源码目录
最后的版本日期不同所以使用xxxx-xx-xx表示,可以使用“ll -a”看一下目录名称,然后改成对应的目录名(日期不同)
cd git-{date}
执行编译命令:
autoconf
./configure --with-curl=/usr/local
make
如出现下列错误:
usr/bin/perl Makefile.PL PREFIX='/usr/local/git' INSTALL_BASE='' --localedir='/usr/local/git/share/locale'
Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 3.
BEGIN failed--compilation aborted at Makefile.PL line 3.
make[1]: *** [perl.mak] Error 2
make: *** [perl/perl.mak] Error 2执行命令:
yum install perl-ExtUtils-MakeMaker package
执行安装命令:
make install
验证是否安装成功:检查安装的版本:
git --version
执行命令可查看git安装目录:
whereis git
创建一个git用户,用来运行git服务
创建一个git用户:
sudo useradd -r -s /bin/sh -c 'git version control' -d /home/git git
创建用户操作目录:
mkdir -p /home/git
chown git:git /home/git
初始化Git仓库
小知识: /srv: 服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内。
先选定一个目录作为Git仓库
cd 仓库目录
初始化创建一个git空仓库(假定是/srv/ project.git,在/srv/目录下输入命令):
git init --bare project.git
- 更改仓库权限(Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git):
chown -R git.git project.git