一、概述 1.1git概念
Git是一个开源的分布式版本控制系统,用于敏捷高效处理任意规模的项目,其作者为Linux创造者Linus Torvalds为管理Linux内核而开放的一个开源的版本控制柔软剂与其他版本控制工具例如:CVS,Subversion 等不同,它可采用分布式版本,不必依赖于服务器端软件支持。
1.2Git与SVN区别Git不仅仅是版本控制系统,也是一个内容管理系统相比与SVN的区别如下:
1.GIT为分布式,SVN则不是;
2.GIT按照元数据形式存储内容,讲所有资源孔子系统都是把文件的元数据隐藏在一个类似.svn,.cvs的文件夹内,而SVN是按文件;
3.GIT分支与SVN不同,分支在SVN内的另一个目录;
4.GIT没有全局版本号,SVN有全局版本号;
5.GIT内容完整性优于SVN,GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
1.克隆Git资源作为工作目录
2.在克隆的资源上添加或修改文件
3.如果他人修改,你可以进行资源更新
4.在提前查看修改
5.提交修改
6.在修改完成后,如果发现错误,可撤回提交并再次修改提交
流程图:
工作区:本地PC可以看到的目录
暂存区:英文名称stage,或index,一般存放在“.git目录”下的index文件(.git/index)中,所以我们把暂存区有时也称作索引(index)
版本库:工作区有一个隐藏的目录.git,此为Git的版本库
图中左侧为工作区,右侧为版本库,在版本库中标记为“index”的区域为暂存区(stage,index),标记为“master”的是master分支所代表的目录树。
图中可以看到“HEAD”实际指向的是master分支的一个“游标”,所以途中的HEAD的地方可以用master来替换。
图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容。
当对工作区修改(或新增)的文件执行 "git add" 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
当执行 "git reset HEAD" 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
当执行 "git rm --cached <file>" 命令时,会直接从暂存区删除文件,工作区则不做出改变。
当执行 "git checkout ." 或者 "git checkout -- <file>" 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。
当执行 "git checkout HEAD ." 或者 "git checkout HEAD <file>" 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
yum 安装
yum install git git --version #查看版本源码安装
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc-c++ perl-ExtUtils-MakeMaker wget -y wget https://www.kernel.org/pub/software/scm/git/git-2.7.3.tar.gz tar xf git-2.7.3.tar.gz cd git-2.7.3 make configure ./configure --prefix=/usr/local/git make profix=/usr/local/git make install echo "export PATH=$PATH:/usr/local/git/bin" > /etc/profile.d/git.sh #添加环境变量 source /etc/profile.d/git.sh 2.2 Git配置Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。
配置用户信息
Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以git init是使用 Git 的第一个命令。
在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变(不像 SVN 会在每个子目录生成 .svn 目录,Git 只在仓库的根目录生成 .git 目录)。
该命令执行完后会在当前目录生成一个 .git 目录。
使用我们指定目录作为Git仓库。
初始化后,会在 newrepo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。
如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:
3.1 创建目录初始化
mkdir /workspace cd /workspace git init