前言:给后端工程师使用的版本控制器,本质上类似带时间标记的ftp,使用比较简单,就在这里归纳出来,供参考学习。
git1、概念简介
分布式版本控制系统(Distributed Version Control System,DVCS)是一种用于协作开发和管理代码的版本控制系统。与集中式版本控制系统(Centralized Version Control System)不同,分布式版本控制系统在每个开发者的本地都有一个完整的代码仓库副本,并且可以在本地进行提交、分支、合并等操作,而不需要依赖中央服务器。
以下是分布式版本控制系统的一些关键概念和特点:
-
本地仓库:每个开发者都拥有一个完整的代码仓库副本,包含完整的历史记录和版本信息。这样可以在本地进行提交、查看历史记录、创建分支等操作,而不需要网络连接。
-
分支和合并:由于每个开发者都有完整的代码仓库,因此可以轻松创建和管理分支。开发者可以在本地创建新的分支、进行修改,然后再将分支合并到主线或其他分支上。
-
离线工作:由于每个开发者都有本地完整的代码仓库,所以可以在没有网络连接的情况下继续工作。只有在需要与其他开发者共享代码或同步更新时才需要连接到中央服务器。
-
分布式架构:分布式版本控制系统不依赖中央服务器来存储代码库的完整历史记录,每个开发者都可以充当代码库的备份。这样可以提高系统的可靠性和安全性。
一些常见的分布式版本控制系统包括Git、Mercurial等。这些系统广泛应用于各种规模的软件开发项目中,提供了更加灵活、高效和安全的代码管理方式。使用分布式版本控制系统可以让开发团队更好地协作,更容易地追踪和管理代码的变更历史,从而提高开发效率和代码质量。
注:早期使用的集中化的版本控制系统 CVS、Subversion(SVN)在某些地方仍在使用,大概了解下即可。
2、产品分类
2.1、github
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。GitHub拥有1亿以上的开发人员,400万以上组织机构和3.3亿以上资料库,无保密要求的开源项目可直接注册github账号用作项目分布式版本控制系统。
2.2、git
纯命令行终端界面,需要用户在本地计算机上安装和使用
2.3、gitlab
GitLab 是一个基于 Git 的代码托管平台和协作工具,提供了用于托管 Git 仓库、进行代码审查、问题跟踪、持续集成等功能。与 Git 不同,GitLab 是一个网站或者服务器端应用程序,用户可以在其中创建项目、提交代码、进行代码审查、管理团队。等。支持Ubuntu,Debian,CentOS,RHEL,Scientific Linux,Oracle Linux,下面为官网截图
3、gitlab部署
按照官方提示选择使用centos7版本(这个版本建议搭建本地源,阿里源与官方源状态并不稳定)
系统版本:
内存大小:建议高于4G
3.1、基础环境部署
[root@localhost ~]# yum install curl policycoreutils openssh-server openssh-clients
#安装和配置必要的依赖关系,主要是远程登陆和客户端程序,共两种连接方式
[root@localhost ~]# systemctl enable sshd
[root@localhost ~]# systemctl start sshd
#ssh开机自启
[root@localhost ~]# yum install postfix -y
#安装邮箱程序,gitlab注册时要用到邮箱名
[root@localhost ~]# systemctl enable postfix
[root@localhost ~]# systemctl start postfix
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl disable firewalld
关闭防火墙
3.2、gitlab安装
1)官网安装(不建议)
此处建议使用使用本机下载好rpm安装包再去安装,官网下载源然后yum安装大概率出错
2)rpm包安装
将软件包上传至需要安装的服务器
链接:https://pan.baidu.com/s/1gfkb8ciwRpAJKeYLJ5bSYg?pwd=j2lx
提取码:j2lx
[root@localhost ~]# ls
anaconda-ks.cfg gitlab-ce-9.1.0-ce.0.el7.x86_64.rpm jdk-8u151-linux-x64.tar.gz
[root@localhost ~]# yum install -y gitlab-ce-9.1.0-ce.0.el7.x86_64.rpm
[root@localhost ~]# gitlab-ctl reconfigure
#自动配置文件权限,安装数据库
此时软件已经部署完成,使用浏览器可以登录访问ip
进入gitlab
至此正常情况下运维工程师工作结束,环境台账记录后移交开发部门。
3.3、创建项目
点击创建项目,粘贴这个地址,用于下载项目(地址有两个一个是ssh,一个是http都粘下来)
3.4、推送ssh密钥
[root@localhost ~]# 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:pgXU6ATZg3v4/V17QkfNojGA/IDEsIXup4kLdi7kdOQ root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| oX+= . |
| ++B = . |
| ..=.. o . ..|
| .+ o. . o . +|
| o. o .S + o |
| o E. o+. . o .|
|=..o +. . . o o |
|.++ o . . o .|
| oo o |
+----[SHA256]-----+
[root@localhost ~]# cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfJ+CyvnmclT49jvj0jVeCcN+wlReORBcpfZMyxvm0s2JU6eStxecSWE5MCYo0bE4LlMEYOjkgk+7/1lAfuDhCTnAe554QgULt1xSI47wNavaq/NKj6C7RSKD/ufNkXMyuSviIvOipDa1BbarjfvAs7fTfxbofyjOmYu7GMGvT9wt00wlCR7Kc7g/WBi+Q8ZGSzn85AQLtyASDqBhbVk+rnzDx2iP1vk1np3aveYKDGDiYC5hi6yIpX0MVVDqF8K2MOvygyJy50qHbDXLl7fr3+hnwE+k8sPCiQI7RPsoHo7QypQ2K2bcxM6QksKqao18srVLxYueNkOvb/ttOy2zT root@localhost.localdomain
复制id_rsa.pub内容,上传密钥
建立成功
4、使用gitlab
4.1、图形操作
前方复制的地址
http://root@localhost/root/liumuquan_project1.git
![](https://img-blog.csdnimg.cn/direct/9e4fb819dfbb479c8c1145b8bef90980.png)
![](https://img-blog.csdnimg.cn/direct/1cc281b7f3eb4fbcabc07846b4634654.png)
提交后可以看到提交成功的文件
下载文件
4.2、命令行操作
前方复制的地址
git@localhost:root/liumuquan_project1.git
首先配置域名解析/etc/hosts,但因上方地址为localhost故本次演示无需配置
[root@localhost ~]# git config --global user.name "git"
#设置登录gitlab用户名为程序自带的用户名git,这个用户默认无密码,也可以使用授权过的用户登录
[root@localhost ~]# git config --global user.email "git@localhost"
#登陆的邮箱是 用户名@本机地址
[root@localhost ~]# git clone git@localhost:root/liumuquan_project1.git
#登录gitlab地址 (刚刚复制的ssh地址),克隆liumuquan_project1.git这个项目
正克隆到 'liumuquan_project1'...
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:h+dqO2Yc4KC5d5BuAoydx9b7jVe2NwTYNrNWjLa7NPk.
ECDSA key fingerprint is MD5:18:52:74:a6:ae:b2:57:31:2d:91:ed:16:85:3a:c0:d7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
remote: Counting objects: 13, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 13 (delta 0), reused 0 (delta 0)
接收对象中: 100% (13/13), 43.49 KiB | 0 bytes/s, done.
[root@localhost ~]# ls
anaconda-ks.cfg jdk-8u151-linux-x64.tar.gz
gitlab-ce-9.1.0-ce.0.el7.x86_64.rpm liumuquan_project1
[root@localhost ~]# ls liumuquan_project1/
1.jpg 2.jpg test2 test_newfile_1.sh
[root@localhost ~]#
下载完成,此时开始尝试命令行上传cishi
[root@localhost ~]# ls liumuquan_project1/
1.jpg 2.jpg test2 test_newfile_1.sh
[root@localhost ~]# cd liumuquan_project1/
[root@localhost liumuquan_project1]# echo 111111111111111 > test_newfile_3.sh
[root@localhost liumuquan_project1]# ls
1.jpg 2.jpg test2 test_newfile_1.sh test_newfile_3.sh
[root@localhost liumuquan_project1]# cat test_newfile_3.sh
111111111111111
[root@localhost liumuquan_project1]# git init
重新初始化现存的 Git 版本库于 /root/liumuquan_project1/.git/
[root@localhost liumuquan_project1]# git remote add origin git@localhost:root/liumuquan_project1.git
fatal: 远程 origin 已经存在。
#添加远程起源
[root@localhost liumuquan_project1]# git add .
#添加当前目录
[root@localhost liumuquan_project1]# git commit -m "2024-6-6 test cmd_test 3.sh"
[master 3b63514] 2024-6-6 test cmd_test 3.sh
1 file changed, 1 insertion(+)
create mode 100644 test_newfile_3.sh
#这一步非上传而是确立索引和描述
[root@localhost liumuquan_project1]# git push -u origin master
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 281 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@localhost:root/liumuquan_project1.git
8d0873f..3b63514 master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。
#此时上传已完成
使用浏览器查看,文件已上传成功