二、Git

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(+)

原文地址:https://www.cnblogs.com/backz/p/15568903.html