目录
前言
1.什么是git?
- 开源的最先进的分布式版本控制系统,没有之一
- 用以高效、高速的处理从很小到非常大的项目版本管理。
2.什么是版本控制系统?
- 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统
3.什么是分布式版本控制系统?
- 分布式版本控制系统(Distributed Version Control System,简称 DVCS), 在这类系统中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。
4.Git的功能特性
- 从服务器上克隆数据库(包括代码和版本信息)到单机上
- 在自己的机器上创建分支,修改代码
- 在单机上自己创建的分支上提交代码
- 在单机上合并分支
- 新建一个分支,把服务器上最新版的代码fetch下来,然后跟自己的主分支合并
- 生成补丁(patch),把自己的补丁发送给主开发者
- 看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过
- 一般开发者之间解决冲突的方法,开发者之间可以使用pull命令解决冲突,解决完冲突之后再向主开发者提交补丁
本地Git代码仓库的搭建及使用
1)安装git
[root@hya ~]# yum -y install git
2)创建本地代码仓库
[root@hya ~]# mkdir /mydata #用这个目录作为代码仓库
[root@hya ~]# cd /mydata/
[root@hya mydata]# git init #生成代码仓库的数据文件
初始化空的 Git 版本库于 /mydata/.git/
3)添加用户信息
[root@hya mydata]# git config --global user.name hya
[root@hya mydata]# git config --global user.email [email protected]
[root@hya mydata]# cat ~/.gitconfig
[user]
name = hya
email = [email protected]
4)创建三个测试文件
[root@hya mydata]# touch {1..3}.txt
[root@hya mydata]# echo "this is the first line" >> 1.txt
5)将这三个文件加入到git版本库
[root@hya mydata]# git add ./*
[root@hya mydata]# git commit -m "v1:三个新文件" #在git中记录第一个版本
[master(根提交) 428a197] v1:三个新文件
3 files changed, 1 insertion(+)
create mode 100644 1.txt
create mode 100644 2.txt
create mode 100644 3.txt
6)查看git中版本记录
[root@hya mydata]# git log #此时只有一个版本
commit 428a197b5c1d5988f6a8496b92ecb33e6a093814
Author: hya <[email protected]>
Date: Wed Sep 30 09:12:26 2020 +0800
v1:三个新文件
##########
[root@hya mydata]# git status #查看仓库文件状态
# 位于分支 master
无文件要提交,干净的工作区
7)创建进行一些修改操作,将修改后的代码再次加入到代码库中
[root@hya mydata]# echo "this is the second line" >> 1.txt
[root@hya mydata]# touch 4.txt
[root@hya mydata]# git add ./*
[root@hya mydata]# git commit -m "v2:追加一行内容,并创建新文件"
[master 7ca425c] v2:追加一行内容,并创建新文件
2 files changed, 1 insertion(+)
create mode 100644 4.txt
8)查看git中的版本记录
[root@hya mydata]# git log
commit 7ca425c4ebd68a923e50d3e2843fb46a496c78ad
Author: hya <[email protected]>
Date: Wed Sep 30 09:33:35 2020 +0800
v2:追加一行内容,并创建新文件 #第一个版本
commit 428a197b5c1d5988f6a8496b92ecb33e6a093814
Author: hya <[email protected]>
Date: Wed Sep 30 09:12:26 2020 +0800
v1:三个新文件 #第二个版本
9)再次修改1.txt,将修改后的代码再次加入到代码库中
[root@hya mydata]# echo "" > 1.txt
[root@hya mydata]# git add ./*
[root@hya mydata]# git commit -m "v3:清空1.txt"
[master 60b3b76] v3:清空1.txt
1 file changed, 1 insertion(+), 2 deletions(-)
######查看版本库中的内容
[root@hya mydata]# git log
commit 60b3b76249db80c782a434842763e4ce8943fcf2
Author: hya <[email protected]>
Date: Wed Sep 30 09:36:21 2020 +0800
v3:清空1.txt
commit 7ca425c4ebd68a923e50d3e2843fb46a496c78ad
Author: hya <[email protected]>
Date: Wed Sep 30 09:33:35 2020 +0800
v2:追加一行内容,并创建新文件
commit 428a197b5c1d5988f6a8496b92ecb33e6a093814
Author: hya <[email protected]>
Date: Wed Sep 30 09:12:26 2020 +0800
v1:三个新文件
10)查看历史版本记录
[root@hya mydata]# git reflog
60b3b76 HEAD@{0}: commit: v3:清空1.txt
7ca425c HEAD@{1}: commit: v2:追加一行内容,并创建新文件
428a197 HEAD@{2}: commit (initial): v1:三个新文件
11)恢复v2版本
[root@hya mydata]# git reset --hard 7ca425c #指定恢复到id为7ca425c的版本中
HEAD 现在位于 7ca425c v2:追加一行内容,并创建新文件
12)验证
[root@hya mydata]# cat 1.txt #是第二版中的内容
this is the first line
this is the second line
总结
git这个工具其实蛮好用的,最近我也在重新熟悉这一块的技术,感兴趣的小伙伴们要“一键三连”吖。