1.安装Git版本控制系统
Git的工作区、暂存区和版本库的含义
工作区:就是你在电脑里能看到的目录。
暂存区:英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
1.安装和配置git
yum install git -y
git --version
git config --global user.name "chenkang" -->声明自己的用户名
git config --global user.email "admin@example.com" -->声明自己的用户邮箱
git config --global color.ui "true"
2.创建版本库【初始化一个仓库】
git init
3.git仓库添加文件
1.添加当前目录所有文件到缓冲区
git add .
2.将缓冲区的内容添加到本地的git仓库中
git commit -m 'add three file'
4.git修改文件名称并提交
git mv file1 file4
git commit -m 'change file name'
5.git的文件对比
1.本地目录和缓冲区文件对比
git diff file3
2.缓冲区文件和仓库文件对比
git diff --cached file3
6.实现回退功能
#查看当前状态之后的commit提交信息
git log --oneline
#查看当前的指针
git log --oneline --decorate
#回退到commit Id 为942bdf3的状态
git reset --hard 942bdf3
查看所有历史版本
git reflog --oneline
git reset --hard 942bdf3
#查看提交历史版本
git log #详细历史记录
git log --oneline #简洁查看
git log --graph #查看历史中什么时候出现了分支、合并
git log --reverse #逆向显示版本日志
git log --author=douer --oneline -5 #查找指定用户的提交日志并只显示5行
#查找三周前且在九月二十八日之后的所有提交
git log --oneline --before={3.weeks.ago} --after={2019-09-28} --no-merges
7.撤销修改的文件
将提交到缓冲的区文件撤回
git reset HEAD file3(文件名)
未add到缓冲区的文件撤回
git checkout -- file3(文件名)
8.代码提交的流程图
2.git分支管理
分支管理的目的就是将当前已经可以发布模块放在一个分支,在另外一个分支进行进一步开发,开发完成后可以进行分支合并。
在gitlab上默认的分支是master(主分支),也只有这一个分支,其他分支需要开发人员自行建立。
#增加一个新分支
git branch dev01
#切换分支
git checkout dev01
#在开发分支上合并主分支,代码冲突在其他分支上解决
git merge master -m '注释'
#切回主分支
git checkout master
#在主分支合并开发
git merge dev01 -m '注释'
实际开发时,应该按照以下几个原则进行开发
1、master分支应该是非常稳定的,也就是仅用来发布新版本,平时不在上面干活
2、开发都在dev分支,也就是说dev分支是不稳定的,到某个时候,比如发布版本的时候,将dev分支合并到master上,在master分支发布版本
3、开发者可以在dev分支上开发,每个人都有自己的分支,最后往dev分支合并就可以了
4、合并分支的时候,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,可以看出曾经做过合并,而fast forward则看不出来
3.git标签管理
标签给commit起一个容易记的别名
#给当前版本打标签
git tag v1.2
#删除标签
git tag -d v1.2
#给任意版本打标签
git tag -a v1.0 -m '优化了1111 修复bug' a119962
#查看标签的详细信息
[root@node1 warehouse]# git show v1.1
tag v1.1
Tagger: douer <245684979@qq.com>
Date: Mon Oct 28 14:25:25 2019 +0800
v1.1 add 机器人
commit ff8f2058237206f34be4670cc5822d3b70f333b5
Author: douer <245684979@qq.com>
Date: Mon Oct 28 13:46:59 2019 +0800
first
diff --git a/file4 b/file4
new file mode 100644
index 0000000..e69de29
4.git导出代码方法
1.使用git archieve
命令进行代码打包
git archive --format tar.gz --output "./output.tar.gz" master
* 将master分支打包为output.tar.gz
* --format 指明打包格式,若不指明此项,则根据--output中的文件名推断文件格式。
* --output 指明输出包名
#所以也可以将上述命令简化为:
git archive --output "./output.tar.gz" master
#可以使用"-l"参数获得支持的文件格式列表
[root@node1 warehouse]# git archive -l
tar
tgz
tar.gz
zip
2.打包不同的分支或commit
>如果想打包不同分支,只要使用不同分支名即可。比如有一个分支名为“dev01”,可以用如下命令将其打包。
git archive --format tar.gz --output "./output.tar.gz" dev01
>如果要打包某个commit,只要先使用git log找到相应的commit id, 再使用该commit id打包即可。
git archive --format tar.gz --output "./output.tar.gz" 5ca16ac0d603603
#打包某个目录
>如果想打包master下的目录,可以用下面命令
git archive --format tar.gz --output "./output.tar.gz" master #注意:打包建议在代码库的根目录下进行,不然会碰到各种问题
5.git的升级
(CentOS自带的有git,不过版本比较低。可以选择进行升级。)
#测试环境
[root@node1 tools]# git --version
git version 1.8.3.1
[root@node1 tools]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
#安装依赖软件
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc -y
yum install gcc perl-ExtUtils-MakeMaker -y
#卸载低版本git
yum remove git -y
#下载最新版本
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.23.0.tar.xz
#进行编译安装最新版git
[root@node1 warehouse]# cd /usr/local/src/
[root@node1 src]# tar xf /server/tools/git-2.23.0.tar.xz
[root@node1 src]# cd git-2.23.0/
[root@node1 git-2.23.0]# make prefix=/usr/local/git all
[root@node1 git-2.23.0]# make prefix=/usr/local/git install
[root@node1 git-2.23.0]# echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile