1.Git
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而是一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必有服务器端软件支持。
2.安装
[root@jenkins ~]# yum install git -y
[root@jenkins ~]# git --version
git version 1.8.3.1
3.仓库
对应的就是一个目录,这个目录中的所有文件被git管理起来。以后会将一个项目的根目录,作为仓库。仓库中的每个文件的改动 都由git跟踪。
私有:团队内部成员可访问
公开:所有成员可访问
#新建仓库并初始化
[root@jenkins ~]# mkdir /springboot
[root@jenkins /springboot]# git init
[root@jenkins /springboot]# ll -a
drwxr-xr-x 3 root root 36 Nov 17 11:42 .
dr-xr-xr-x. 18 root root 262 Nov 17 11:06 ..
drwxr-xr-x 7 root root 132 Nov 17 11:45 .git
4.配置git
[root@jenkins /springboot]# git config --global user.name "zzc"
[root@jenkins /springboot]# git config --global user.email "zzc141145@126.com"
[root@jenkins /springboot]# git config -l
user.name=zzc
user.email=zzc141145@126.com
5.添加SSH公钥至Gitlab仓库
[root@jenkins /springboot]# ssh-keygen
[root@jenkins /springboot]# cat ~/.ssh/id_rsa.pub
ssh-rsa
------- ------- 省略 ------ -------
#复制秘钥至Gitlab仓库
6.链接远程仓库
[root@jenkins /springboot]# git remote add origin git@www.zzcweb.top:k8s/myjava.git
#查看远程连接
[root@jenkins /springboot]# git remote -v
origin http://www.zzcweb.top/k8s/myjava.git (fetch)
origin http://www.zzcweb.top/k8s/myjava.git (push)
#删除远程连接
[root@jenkins /springboot]# git remote rm origin
7.将代码上传Gitlab仓库
1、git add [文件路径|.(代表当前目录中的所有的文件)]
#提交一个文件到GIT缓冲区
[root@jenkins /springboot]# git add index.html
2、git status #主要查看仓库目录下文件在git中提交的状态
[root@jenkins /springboot]# git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: index.html
#
# Untracked files: #未跟踪文件
# (use "git add <file>..." to include in what will be committed)
#
# index.html
3、git rm --cached [文件路径] #将文件在缓冲区中删除
[root@jenkins /springboot]# git rm --cached index.html
4、git commit #将工作区内容提交至缓冲区
参数 :
-m : 添加备注信息
[root@jenkins /springboot]# git commit -m '注释'
[master e766396] 注释
1 file changed, 5 deletions(-)
6、git log:查看git日志
[root@jenkins /springboot]# git log
commit 2a0f285bcd849657667058eed8bb1034942981c6
Author: zzc <zzc141145@126.com>
Date: Wed Nov 17 16:51:11 2021 +0800
注释
5、git push origin [分支] #推送到远程仓库
参数:
-f : 强制推送
#提交本地git缓冲区内的内容到远程仓库, 如果有冲突,可以使用--force参数强制提交 指定分支:git push origin master
-- origin 是指远程
-- master 是指远程仓库的分支
[root@jenkins /springboot]# git push origin master
8.Git回滚
git reset --hard [commit id]:回退版本信息
#注意:
[root@jenkins /springboot]# git log
commit e0f4aac4e1971d625aa78f23381426a8230fcf83
Author: zzc <zzc141145@126.com>
Date: Wed Nov 17 17:09:44 2021 +0800
html
commit 6866a3cf207558178eebbf15be73f6f5f16ea126
Author: zzc <zzc141145@126.com>
Date: Wed Nov 17 17:09:00 2021 +0800
yaml
[root@jenkins /springboot]# git reset --hard 6866a3cf207558178eebbf15be73f6f5f16ea126
HEAD is now at 6866a3c yaml
[root@jenkins /springboot]# git log
commit 6866a3cf207558178eebbf15be73f6f5f16ea126
Author: zzc <zzc141145@126.com>
Date: Wed Nov 17 17:09:00 2021 +0800
yaml
#回滚后只是在本地Git缓冲区回滚,如果要远程仓库文件回滚需重新上传一次。分支被保护需在gitlab取消保护分支才能上传成功
[root@jenkins /springboot]# git push -f origin master
Total 0 (delta 0), reused 0 (delta 0)
To git@www.zzcweb.top:k8s/myjava.git
+ b5690e4...6866a3c master -> master (forced update)
#取消保护:仓库>>>>>>分支>>>>>>>>项目设置>>>>>>>>>Protected branches
9.分支
dev : 开发分支
test : 测试分支
pre : 预发布分支
master:正式生产环境分支
#查看分支(以*开头的分支名称为当前所在分支)
git branch
参数:
-a 查看所有的分支
[root@jenkins /springboot]# git branch
* master
#创建分支(第一种方式)
git branch [分支名称]
[root@jenkins /springboot]# git branch dev
[root@jenkins /springboot]# git branch
dev
master
* test
#创建分支(第二种方式)
git checkout -b [分支名称]
[root@jenkins /springboot]# git checkout -b pre
Switched to a new branch 'pre'
[root@jenkins /springboot]# git branch
dev
master
* pre
test
## 区别:
git branch 创建分支仍留在原分支
git checkout 创建分支,立即切换至新分支
#切换分支
git checkout [分支名称]
[root@jenkins /springboot]# git checkout test
Already on 'test'
[root@jenkins /springboot]# git branch
master
* test
10.不同分支之间数据转换
1.在655分支准备一份文件index.html
[root@jenkins /springboot]# git branch
* 655
dev
master
pre
test
[root@jenkins /springboot]# ll
-rw-r--r-- 1 root root 210 Nov 17 18:45 index.html
2.上传代码至远程仓库
[root@jenkins /springboot]# git add index.html
[root@jenkins /springboot]# git commit -m 'test'
[root@jenkins /springboot]# git push origin 655
3.切换到dev分支
[root@jenkins /springboot]# git checkout dev
[root@jenkins /springboot]# git branch
655
* dev
master
pre
test
4.拉取远程仓库655分支的内容
[root@jenkins /springboot]# git pull origin 655
5.推送到远程dev分支
[root@jenkins /springboot]# git push origin dev
11.下载代码
1.本地没有仓库
仓库链接:Gitlab >>>>>> 项目 >>>>>>> 克隆
git clone [仓库链接]
[root@jenkins ~]# git clone git@www.zzcweb.top:k8s/myjava.git
[root@jenkins ~]# cd myjava/
[root@jenkins ~/myjava]# ll -a
drwxr-xr-x 3 root root 36 Nov 17 19:20 .
dr-xr-x---. 5 root root 242 Nov 17 19:20 ..
drwxr-xr-x 8 root root 163 Nov 17 19:20 .git
-rw-r--r-- 1 root root 121 Nov 17 19:20 index.yaml
2.本地已存在仓库
git pull [origin] [分支名称(默认当前分支)]
[root@jenkins ~/myjava]# git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From www.zzcweb.top:k8s/myjava
6866a3c..d3accc0 master -> origin/master
Updating 6866a3c..d3accc0
Fast-forward
index.yaml | 1 +
1 file changed, 1 insertion(+)