Docker-kubernetes-持续集成与持续交付
Git简介
- Git简介
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件
Git也是目前最流行的分布式版本控制系统,它和其他版本控制系统的主要差别在于Git只关心文件数据的整体是否发生变化,而大多数版本其他系统只关心文件内容的具体差异,这类系统(CVS,Subversion,Perforce,Bazaar 等等)每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。
-
版本控制系统简介
本地版本控制系统
集中化的版本控制系统
分布式版本控制系统 -
Git特点:
• 速度
• 简单的设计
• 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
• 完全分布式
• 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量 -
Git状态
Git 有三种状态:已提交(committed)、已修改(modified) 和 已暂存(staged)。
• 已修改表示修改了文件,但还没保存到数据库中。
• 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快 照中。
• 已提交表示数据已经安全地保存在本地数据库中。
这会让我们的 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录。
git工具使用
安装git
[root@server1 ~]# yum install -y git
配置用户名和邮箱
[root@server1 demo]# git config --global user.email "chen.com"
[root@server1 demo]# git config --global user.name "chen"
[root@server1 demo]# git config --global user.name
chen
[root@server1 demo]# git config --global user.email
chen.com
获取Git配置信息
[root@server1 demo]# git config --list
user.email=chen.com
user.name=chen
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
创建工作目录
[root@server1 ~]# mkdir demo
[root@server1 ~]# cd demo/
[root@server1 demo]# ls -a
. ..
初始化git
[root@server1 demo]# git init
Initialized empty Git repository in /root/demo/.git/
[root@server1 demo]# ls -a
. .. .git readme.md
[root@server1 demo]# cd .git/
[root@server1 .git]# ls
branches config description HEAD hooks info objects refs
创建测试文件 README.md 查看状态
[root@server1 demo]# touch README.md
[root@server1 demo]# ls
README.md
[root@server1 demo]# git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# README.md
nothing added to commit but untracked files present (use "git add" to track)
添加工作区文件到暂存区
[root@server1 demo]# git status -s
?? README.md
[root@server1 demo]# git add README.md
[root@server1 demo]# git status -s
A README.md
提交暂存区的文件
[root@server1 demo]# git commit -m "add README.md"
[master (root-commit) 5b85da5] add README.md
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md
[root@server1 demo]# git status -s
修改工作区的文件,查看状态,M为红色且靠右
[root@server1 demo]# echo hello >> README.md
[root@server1 demo]# git status -s
M README.md
提交到暂存区后再次查看,M为绿色且靠做
[root@server1 demo]# git add README.md
[root@server1 demo]# git status -s
M README.md
全部提交
[root@server1 demo]# git commit -m "update README.md"
[master 3fff37a] update README.md
1 file changed, 1 insertion(+)
[root@server1 demo]# git status -s
撤销
[root@server1 demo]# cat README.md
hello
[root@server1 demo]# echo westos >> README.md
[root@server1 demo]# git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: README.md
#
no changes added to commit (use "git add" and/or "git commit -a")
[root@server1 demo]# git status -s
M README.md
[root@server1 demo]# git checkout -- README.md
[root@server1 demo]# cat README.md
hello
删除 README.md
[root@server1 demo]# rm -f README.md
[root@server1 demo]# git status -s
D README.md
[root@server1 demo]# git status
# On branch master
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: README.md
#
no changes added to commit (use "git add" and/or "git commit -a")
恢复README.md
[root@server1 demo]# git reset
Unstaged changes after reset:
D README.md
[root@server1 demo]# git checkout -- README.md
[root@server1 demo]# ls
README.md
[root@server1 demo]# cat README.md
hello
版本回溯
[root@server1 demo]# git reflog
458f92a HEAD@{
0}: commit: delete README.md
3fff37a HEAD@{
1}: commit: update README.md
5b85da5 HEAD@{
2}: commit (initial): add README.md
[root@server1 demo]# ls
[root@server1 demo]# git reset --hard 3fff37a
HEAD is now at 3fff37a update README.md
[root@server1 demo]# ls
README.md
[root@server1 demo]# cat README.md
hello
[root@server1 demo]# git reset --hard 5b85da5
HEAD is now at 5b85da5 add README.md
[root@server1 demo]# ls
README.md
[root@server1 demo]# cat README.md
github远程仓库搭建
登陆github后新建仓库
选择ssh
生成密钥并把公钥复制到github的sshkey
[root@server1 demo]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:EjUJYuuI88agft/bsvkQkeCUOkWbuUFMvD9e9b1NeEg root@server1
The key's randomart image is:
+---[RSA 2048]----+
| B*o.o. |
| .+B=.o. |
| +*oo |
| . = .o.. . E |
|+ . o.o.S . ...o |
|.= +.. .o.o|
|. + ..o oo|
|.. . .o+ ..|
| .. .. ==o |
+----[SHA256]-----+
[root@server1 demo]# ls
README.md
[root@server1 demo]# cd /home/
[root@server1 home]# ls
[root@server1 home]# cd /root/.ssh/
[root@server1 .ssh]# ls
id_rsa id_rsa.pub
[root@server1 .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3dUhX58vDw/MBWKx72rOr26PFq2aTMsG81tO7qkX1T6fTjmfYuDkm+bX+c3WjDWstcJ3dYEUhMWNHsonphhHBtOXGxrg7SOrXAZIC44hF4JpiSu8Wz06nnmV8ApQU+BdCfcPG/6s6s7YxGn9SSRUVCruDpr/tR6fUaI+LRrLKlMSY3bSbW86DMLP114LhIzljXyWLfpugj65+GiNScIK4xEUT0EiA2IitD0i4nHJzdjEhoNKy/zHVaP+faBWaDMwexmuiiBuCP89R9OAnsmybvtpzt6aD/dfmdiwhWUwqCkezFYEXTf5G2t07ZK2otpkoQzAX22x2wFgxzHq47Di3 root@server1
添加远程仓库
[root@server1 demo]# git remote -v
[root@server1 demo]# git remote add origin [email protected]:C1304663149/demo.git
[root@server1 demo]# git remote -v
origin git@github.com:C1304663149/demo.git (fetch)
origin git@github.com:C1304663149/demo.git (push)
上传
[root@server1 demo]# git push -u origin main
The authenticity of host 'github.com (13.250.177.223)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
RSA key fingerprint is MD5:16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,13.250.177.223' (RSA) to the list of known hosts.
Counting objects: 3, done.
Writing objects: 100% (3/3), 201 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:C1304663149/demo.git
* [new branch] main -> main
Branch main set up to track remote branch main from origin.
再次进入demo可以看见 README.md
gitlab代码仓库
虚拟机server1,内存不小于4G
可以在国内镜像站下载el7的最新的gitlab安装包
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/
下载gitlab的依赖
[root@server1 ~]# yum install -y curl policycoreutils-python openssh-server perl
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Package curl-7.29.0-51.el7.x86_64 already installed and latest version
Package policycoreutils-python-2.5-29.el7.x86_64 already installed and latest version
Package openssh-server-7.4p1-16.el7.x86_64 already installed and latest version
Package 4:perl-5.16.3-293.el7.x86_64 already installed and latest version
Nothing to do
安装gitlab安装包
[root@server1 ~]# rpm -ivh gitlab-ce-14.1.2-ce.0.el7.x86_64.rpm
warning: gitlab-ce-14.1.2-ce.0.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f27eab47: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:gitlab-ce-14.1.2-ce.0.el7 ################################# [100%]
It looks like GitLab has not been configured yet; skipping the upgrade script.
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,