大家好,今天要跟大家讲的是关于git版本控制管理的一点小知识,git相信程序员小伙伴们都已经很熟悉了,很多项目开发都需要git,所以,git版本控制管理到底是干嘛的呢?Git又如何实现版本控制呢?下面就与大家讲解一下。
先介绍一下 Git 的特点,主要有两大特点:
版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代码的问题。
分 布
式:Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。首先找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。可以自己搭建这台服务器,也可以使用GitHub网站。
1. Git 安装[root@kai~]#yuminstallgit-y
[root@kai~]#git--version
gitversion1.8.3.1
2.创建一个版本库
新建一个目录git_test,在git_test目录下创建一个版本库,命令如下:[root@kai~]#mkdirgit_test
[root@kai~]#cdgit_test/
[root@kaigit_test]#ll-a
total0
drwxr-xr-x2rootroot6Mar1321:43.
dr-xr-x---.5rootroot228Mar1321:43..
[root@kaigit_test]#gitinit
InitializedemptyGitrepositoryin/root/git_test/.git/
[root@kaigit_test]#ll-a
total0
drwxr-xr-x3rootroot18Mar1321:44.
dr-xr-x---.5rootroot228Mar1321:43..
drwxr-xr-x7rootroot119Mar1321:44.git
可以看到在git_test目录下创建了一个.git隐藏目录,这就是版本库目录。
3.版本创建与回退
3.1 基本使用
在git_test目录下创建一个文件code.txt,编辑内容如下:[root@kaigit_test]#vimcode.txt
[root@kaigit_test]#catcode.txt
thisisthefirstline
使用如下两条命令可以创建一个版本:[root@kaigit_test]#gitcommit-m'version1'
***Pleasetellmewhoyouare.
Run
gitconfig--globaluser.email"you@"
gitconfig--globaluser.name"YourName"
tosetyouraccount'sdefaultidentity.
Omit--globaltosettheidentityonlyinthisrepository.
fatal:unabletoauto-detectemailaddress(got'root@kai.(none)')
# 出现该错误原因是我们没有配置git库的用户名与邮箱,按提示创建即可。[root@kaigit_test]#gitconfig--globaluser.email"kai@"
[root@kaigit_test]#gitconfig--globaluser.name"kai"
#再次提交
[root@kaigit_test]#gitcommit-m'version1'
[master(root-commit)020bf02]version1
1filechanged,1insertion(+)
createmode100644code.txt
使用如下命令可以查看版本记录:[root@kaigit_test]#gitlog
commit020bf021ec6d1b77836db4e96541d3659251714e
Author:kai
Date:WedMar1321:57:42-0400
version1
若是想回到某一个版本,可以使用命令:git reset --hard HEAD^。HEAD 表示当前版本,HEAD^ 表示上一个版本,HEAD^^
表示上上个版本。也可以使用另一种表示方式:HEAD~n 表示前n个版本。
如果想回到版本1,可以使用如下命令:[root@kaigit_test]#gitreset--hardHEAD^
HEADisnowat020bf02version1
[root@kaigit_test]#gitlog
commit020bf021ec6d1b77836db4e96541d3659251714e
Author:kai
Date:WedMar1321:57:42-0400
version1
[root@kaigit_test]#catcode.txt
thisisthefirstline
[root@kaigit_test]#
执行命令后使用git log查看版本记录。
工作区和暂存区
(1)工作区(Working Directory)
电脑中的目录,比如我们的git_test,就是一个工作区。
(2)版本库(Repository)
工作区有一个隐藏目录.git,这个不是工作区,而是git的版本库。
git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。因为我们创建git版本库时,git自动为我们创建了唯一一个master分支,所以,现在
git commit 就是往master分支上提交更改。
可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
下面上图理解:
前面说了我们把文件往git版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
下面在git_test目录下再创建一个文件code2.txt,然后编辑内容,同时修改code.txt的内容:[root@kaigit_test]#vimcode2.txt
[root@kaigit_test]#catcode2.txt
thecode2firstline
[root@kaigit_test]#vimcode.txt
[root@kaigit_test]#catcode.txt
thisisthefirstline
thisisthesecondline
thisisthethirdline
使用如下命令查看当前工作树的状态:[root@kaigit_test]#gitstatus
#Onbranchmaster
#Changesnotstagedforcommit:
#(use"gitadd..."toupdatewhatwillbecommitted)
#(use"gitcheckout--..."todiscardchangesinworkingdirectory)
#
#modified:code.txt
#
#Untrackedfiles:
#(use"gitadd..."toincludeinwhatwillbecommitted)
#
#code2.txt
nochangesaddedtocommit(use"gitadd"and/or"gitcommit-a")
[root@kaigit_test]#
上面提示我们code.txt被修改,而code2.txt没有被跟踪。
我们使用如下命令把code.txt和code2.txt加入到暂存区,然后再执行git status命令,结果如下:[root@kaigit_test]#gitaddcode.txt
[root@kaigit_test]#gitaddcode2.txt
[root@kaigit_test]#gitstatus
#Onbranchmaster
#Changestobecommitted:
#(use"gitresetHEAD..."tounstage)
#
#modified:code.txt
#newfile:code2.txt
#
[root@kaigit_test]#
所以git add命令是把所有提交的修改存放到暂存区。
一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的。执行如下命令可以发现:[root@kaigit_test]#gitstatus
#Onbranchmaster
nothingtocommit,workingdirectoryclean
[root@kaigit_test]#
现在我们的版本库变成了这样:
好了,今天的内容就是这样,更多相关内容请持续关注本站。