Git分布式版本控制系统

使用Git服务的时候,要知道三种重要模式,分别是:

已提交(committed):表示数据文件已经顺利提交到Git数据库中。

已修改(modified):表示数据文件已经被修改,但未被保存到Git数据库中。

已暂存(staged):表示数据文件已经被修改,并会在下次提交时提交到Git数据库中。

1、首先配置你的个人用户和电子邮件,设置默认的文本编辑器;

[root@web01 ~]# git config --global user.name "web01"
[root@web01 ~]# git config --global user.email "root@web01.com"
[root@web01 ~]# git config --global core.editor vim 
[root@web01 ~]# git config --list

2、提交数据

[root@web01 ~]# mkdir linux
[root@web01 ~]# cd linux
[root@web01 ~]# git init #初始化git
[root@web01 ~]# echo "first git repository" >read.txt
[root@web01 ~]# git add read.txt #将该文件添加到暂存区
[root@web01 ~]# git commit -m "add the read file" #将文件提交到Git版本仓库
[root@web01 ~]# git status #当前Git版本仓库的状态:

3、设置忽略目录,把不想上传的文件写入到(工作目录/.gitignore)文件中

[root@web01 linux]# touch git.c #创建文件
[root@web01 linux]# vim .gitignore #设置忽略文件
git.c 
[root@web01 linux]# git add .  #添加所有文件至暂存区
[root@web01 linux]# git commit -m "add the .gitignore file" #提交至版本库
如果有多个文件传至版本库中,可采用-a参数,这个就跳过暂存步骤,直接提交到版本库中
[root@web01 linux]# echo "Modified again" >>read.txt
[root@web01 linux]# git commit -a -m "Modified again"
如果想把忽略文件git.c也提交上去,可以加-f参数强制提交
[root@web01 linux]# git add -f git.c #强制提交文件
[root@web01 linux]# git commit -a -m "Second modified again" #再一次提交至版本库

4、数据移除( rm -f )

[root@web01 linux]# touch database #创建一个新的文件
[root@web01 linux]# git add database #添加至暂存区
[root@web01 linux]# git status #查看已经添加database文件;
[root@web01 linux]# git rm --cached database #利用cached参数,只是在暂存区移除,真实数据不会删除
[root@web01 linux]# ls #查看文件并没有删除
database git.c read.txt
而如果我们想将文件数据从Git暂存区和工作目录中一起删除,可以这样操作:
[root@web01 linux]# git add .  #添加所有文件至暂存区
[root@web01 linux]# git rm -f database  #删除文件
[root@web01 linux]# ls  #查看已经删除文件
git.c read.txt

5、数据移动 ( git mv )

[root@web01 linux]# git mv read.txt introduction.txt #重命名
[root@web01 linux]# git commit -m "change name"  #提交文件到Git版本仓库

6、查看历史记录(git log )

[root@web01 linux]# git log #查看所有的历史记录
[root@web01 linux]# git log -2 #查看近两条历史记录
[root@web01 linux]# git log -p -2 # -p参数来展开显示每次提交的内容差异
[root@web01 linux]# git log --stat -2  #--stat参数来简要的显示数据增改行数
[root@web01 linux]# git log --pretty=oneline #--pretty参数显示每行一条提交记录
[root@web01 linux]# git log --pretty=fuller -2 #以更详细的模式输出最近两次的历史记录

还可以使用format参数来指定具体的输出格式,这样非常便于后期编程的提取分析哦,常用的格式有:

%s        提交说明
%cd  提交日期
%an  作者的名字
%cn  提交者的姓名
%ce  提交者的电子邮件
%H  提交对象的完整SHA-1哈希字串
%h  提交对象的简短SHA-1哈希字串
%T  树对象的完整SHA-1哈希字串
%t  树对象的简短SHA-1哈希字串
%P  父对象的完整SHA-1哈希字串
%p  父对象的简短SHA-1哈希字串
%ad  作者的修订时间

查看当前所有提交记录的简短SHA-1哈希字串与提交者的姓名:

[root@web01 linux]# git log --pretty=format:"%h %cn"

7、数据还原

[root@web01 linux]# git log --pretty=oneline #查看历史记录
还原版本使用命令(git reset),而上一个提交版本会叫HEAD^,上上一个版本则会叫做HEAD^^,用HEAD~5来表示往上数第五个提交版本。
[root@web01 linux]# git reset --hard HEAD^ #还原到上一个版本;
[root@web01 linux]# git log --pretty=oneline #查看历史记录已经更新到上个版本;
查看所有历史版本,包括已经还原过的版本;用命令(git reflog)
[root@web01 linux]# git reflog
[root@web01 linux]# git reset --hard d990d1 #另外可通过SHA-1值进行还原,SHA-1值没有必要写全,Git会自动去匹配;
还可以使用checkout,还原最近的一条数据;
checkou规则是如果暂存区中有该文件,则直接从暂存区恢复,如果暂存区没有该文件,则将还原成最近一次文件提交时的快照
[root@web01 linux]# git checkout -- read.txt 

8、标签管理

[root@web01 linux]# git tag v1.0 #添加标签
[root@web01 linux]# git tag #查看标签
v1.0
[root@web01 linux]# git show v1.0 #查看此标签的详细信息;
创建带有说明的标签,通过git密文的前几位设置标签名,-m指定说明文字。
[root@web01 linux]# git tag v0.9 -m "version 0.9 released" 00953
[root@web01 linux]# git tag -d v1.0 #用-d删除标签名。

9、管理分支结构

(1)创建分支

[root@web01 linux]# git branch test #创建分支名称为test;
[root@web01 linux]# git checkout test #切换至分支;
[root@web01 linux]# git branch #查看分支情况;当前分支前有** test  
master
[root@web01 linux]# echo "Create a new branch is quick" >>read.txt #添加内容
[root@web01 linux]# git add read.txt #添加至暂存区;
[root@web01 linux]# git commit -m "new branch" #提交至版本库;
[root@web01 linux]# git checkout master #切换至主分至;
[root@web01 linux]# cat read.txt #查看文本内容;

(2)合并分支

[root@web01 linux]# git merge test #合并test分支;
[root@web01 linux]# cat read.txt #查看上图中文本添加的内容是否正常;
[root@web01 linux]# git branch -d test #删除分支;
[root@web01 linux]# git branch  #查看分支情况;
* master

(3)内容冲突,只能手动处理。

[root@web01 linux]# git checkout -b test #创建一个test新分支并切换至该分支;
[root@web01 linux]# vim read.txt #在应文件中添加一句话,如下
Creating a new branch is quick & simple.
[root@web01 linux]# git add read.txt
[root@web01 linux]# git commit -m "Creating a new branch is quick & simple. " 
[root@web01 linux]# git checkout master #切换至主分支;
[root@web01 linux]# vim read.txt #同时也在文本中添加一句话,如下
Creating a new branch is quick AND simple.
[root@web01 linux]# git add read.txt
[root@web01 linux]# git commit -m "Creating a new branch is quick AND simple. "
[root@web01 linux]# git merge test #合并提示内容有冲突,无法正常合并;
Auto-merging read.txt
CONFLICT (content): Merge conflict in read.txt
Automatic merge failed; fix conflicts and then commit the result.
[root@web01 linux]# vim read.txt
<<<<<<< HEAD
Creating a new branch is quick AND simple.
=======
Creating a new branch is quick & simple.
>>>>>>> linuxprobe
Git用< <<<<<<,=======,>>>>>>>分割开了各个分支冲突的内容,我们需要手工的删除这些符号,并将内容修改为:
Creating a new branch is quick and simple.
[root@web01 linux]# git add read.txt
[root@web01 linux]# git commit -m "conflict fixed" 
[root@web01 linux]# git log --graph --pretty=oneline --abbrev-commit #查看Git历史提交记录(可以看到分支的变化)
[root@web01 linux]# git branch -d test #最后删除test分支;
[root@web01 linux]# git branch #正常显示为一个主分支;
* master 

9、部署Git服务器

Git服务器 centos7 192.168.10.10
Git客户端 centos7 192.168.10.20

(1)服务器部署

[root@web01]# yum install git #安装git程序
[root@web01]# mkdir linux.git #新建Git库
[root@web01]# chown -Rf git:git linux.git/ #修改权限
[root@web01]# cd linux.git/ #进入库目录
[root@web01 linux.git]# git --bare init #初始化Git版本仓库

(2)客户端配置

[root@web02]# ssh-keygen  #生成公钥文件
[root@web02]# ssh-copy-id 192.168.10.10 #把文件传送给Git服务器
[root@web02]# git clone root@192.168.10.10:/root/linux.git #从Git服务器中克隆版本仓库
[root@web02]# cd linux #进入库中初始化Git工作环境,如下
[root@web02]# git config --global user.name "web02"
[root@web02]# git config --global user.email "root@web02.com"
[root@web02]# git config --global core.editor vim
[root@web02]# echo "I successfully clone the git repository" >read.txt #向Git服务器中提交新文件
[root@web02]# git add read.txt #添加至暂存区
[root@web02]# git commit -m "Clone the Git repository" #提交至版本库
[root@web02]# git status #查看库状态
[root@web02]# git remote add server root@192.168.10.10:/root/linux.git #定义远程Git服务器
[root@web02]#git push -u server master #将文件提交到远程Git服务器

10、Github托管服务

(1)首先https://github.com,注册一个账号用于存放自己的代码;本人账号链接为:https://github.com/hume88/linux.git/,进入配置好版本库名称,还要填好公钥地址,以免客户端连不上服务器;

(2)配置客户端

[root@web02]# git clone https://github.com/hume88/linux.git/ #把版本仓库克隆到本地
[root@web02]# git remote add origin https://github.com/hume88/linux.git/ #定义远程Git服务器,远程库的默认名称是origin
[root@web02]# git remote #查看远程库里的文件
linux 
origin
[root@web02]# cd linux #进入远程版本库
[root@web02]# echo "Test the centos system" > features #向版本库中添加新文件测试
[root@web02]# git add features #添加至暂存区
[root@web02]# git commit -m "add features" #提交至版本库
[root@web02]# git push -u origin master  #将本地的Git仓库同步到远程Git服务器,需要填写用户名与密码;
此时已经完成所有操作,刷新服务器网页会多一个features这个文件,表示连接服务器已经连接并发布新的代码成功。
posted @ 2020-01-06 11:51  区域管理员  阅读(154)  评论(0编辑  收藏  举报