05--Git分布式版本控制系统

news2025/1/20 15:53:02

前言:给后端工程师使用的版本控制器,本质上类似带时间标记的ftp,使用比较简单,就在这里归纳出来,供参考学习。

git1、概念简介

分布式版本控制系统(Distributed Version Control System,DVCS)是一种用于协作开发和管理代码的版本控制系统。与集中式版本控制系统(Centralized Version Control System)不同,分布式版本控制系统在每个开发者的本地都有一个完整的代码仓库副本,并且可以在本地进行提交、分支、合并等操作,而不需要依赖中央服务器。

以下是分布式版本控制系统的一些关键概念和特点:

  1. 本地仓库:每个开发者都拥有一个完整的代码仓库副本,包含完整的历史记录和版本信息。这样可以在本地进行提交、查看历史记录、创建分支等操作,而不需要网络连接。

  2. 分支和合并:由于每个开发者都有完整的代码仓库,因此可以轻松创建和管理分支。开发者可以在本地创建新的分支、进行修改,然后再将分支合并到主线或其他分支上。

  3. 离线工作:由于每个开发者都有本地完整的代码仓库,所以可以在没有网络连接的情况下继续工作。只有在需要与其他开发者共享代码或同步更新时才需要连接到中央服务器。

  4. 分布式架构:分布式版本控制系统不依赖中央服务器来存储代码库的完整历史记录,每个开发者都可以充当代码库的备份。这样可以提高系统的可靠性和安全性。

一些常见的分布式版本控制系统包括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
新建文件

编辑内容

提交后可以看到提交成功的文件

 

下载文件

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。



#此时上传已完成

使用浏览器查看,文件已上传成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1801608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据挖掘--分类

数据挖掘--引论 数据挖掘--认识数据 数据挖掘--数据预处理 数据挖掘--数据仓库与联机分析处理 数据挖掘--挖掘频繁模式、关联和相关性:基本概念和方法 数据挖掘--分类 数据挖掘--聚类分析:基本概念和方法 基本概念 决策树归纳 决策树:决策树是一…

从0开始学人工智能测试节选:Spark -- 结构化数据领域中测试人员的万金油技术(四)

上一章节我们了解了 shuffle 相关的概念和原理后其实可以发现一个问题,那就是 shuffle 比较容易造成数据倾斜的情况。 例如上一节我们看到的图,在这批数据中,hello 这个单词的行占据了绝大部分,当我们执行 groupByKey 的时候触发了…

关于怎么用Cubemx生成的USBHID设备实现读取一体的鼠标键盘设备(改进版)

主要最近做了一个要用STM32实现读取鼠标键盘一体的那种USB设备,STM32的界面上要和电脑一样的能通过这个USB接口实现鼠标移动,键盘的按键。然后我就很自然的去参考了正点原子的例程,可是找了一圈,发现正点原子好像用的库函数&#…

Docker的资源限制

文章目录 一、什么是资源限制1、Docker的资源限制2、内核支持Linux功能3、OOM异常4、调整/设置进程OOM评分和优先级4.1、/proc/PID/oom_score_adj4.2、/proc/PID/oom_adj4.3、/proc/PID/oom_score 二、容器的内存限制1、实现原理2、命令格式及指令参数2.1、命令格式2.2、指令参…

如何在 iPhone 上恢复已删除的短信

本文介绍如何检索已删除的短信和 iMessage 以及恢复丢失的消息。说明适用于 iOS 17 及更高版本。 如何在 iOS 17及更高版本中恢复文本 恢复已删除短信的最简单方法是使用 iOS 17。从删除短信到恢复它有 30 到 40 天的时间。 在“信息”的对话屏幕中,选择“过滤器”…

重塑楼宇管理:智慧管控可视化开启高效新篇章

借助图扑智慧楼宇管控可视化技术,实现实时监控与智能化管理,快速响应潜在问题,确保楼宇安全、节能和高效运行。

Qt/C++音视频开发76-获取本地有哪些摄像头名称/ffmpeg内置函数方式

一、前言 上一篇文章是写的用Qt的内置函数方式获取本地摄像头名称集合,但是有几个缺点,比如要求Qt5,或者至少要求安装了多媒体组件multimedia,如果没有安装呢,或者安装的是个空的呢,比如很多嵌入式板子&am…

[图解]建模相关的基础知识-05

1 00:00:01,510 --> 00:00:03,900 练习,我们就出这一道就行了 2 00:00:04,230 --> 00:00:07,210 这些都是像数理逻辑 3 00:00:08,140 --> 00:00:10,570 包括信息专业的 4 00:00:11,350 --> 00:00:12,900 包括文科的 5 00:00:12,910 --> 00:00:14…

论文高级图表绘制(Python语言,局部放大图)

本文将通过一个具体的示例,展示如何使用Python语言和Matplotlib库来绘制高级图表,包括局部放大图的制作。适用于多条曲线绘制在同一个图表中,但由于数据量过大,导致曲线的细节看不清,需要对细节进行局部放大。如下图: 环境准备 首先,确保你的Python环境中已经安装了以…

mqtt-emqx:keepAlive机制测试

mqtt keepAlive原理详见【https://www.emqx.com/zh/blog/mqtt-keep-alive】 # 下面开始写测试代码 【pom.xml】 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2…

数据结构(C语言)之对归并排序的介绍与理解

目录 一归并排序介绍&#xff1a; 二归并排序递归版本&#xff1a; 2.1递归思路&#xff1a; 2.2递归代码实现&#xff1a; 三归并排序非递归版本&#xff1a; 3.1非递归思路&#xff1a; 3.2非递归代码实现&#xff1a; 四归并排序性能分析&#xff1a; 欢迎大佬&#…

day40--Redis(二)实战篇

实战篇Redis 开篇导读 亲爱的小伙伴们大家好&#xff0c;马上咱们就开始实战篇的内容了&#xff0c;相信通过本章的学习&#xff0c;小伙伴们就能理解各种redis的使用啦&#xff0c;接下来咱们来一起看看实战篇我们要学习一些什么样的内容 短信登录 这一块我们会使用redis共…

碳素钢化学成分分析 螺纹钢材质鉴定 钢材维氏硬度检测

碳素钢的品种主要有圆钢、扁钢、方钢等。经冷、热加工后钢材的表面不得有裂缝、结疤、夹杂、折叠和发纹等缺陷。尺寸和允许公差必须符合相应品种国家标准的要求。 具体分类、按化学成分分类 &#xff1a; 碳素钢按化学成分&#xff08;即以含碳量&#xff09;可分为低碳钢、中…

问题:军保卡不允许开立附属卡,不能开展境外交易,不开通云闪付工功能() #其他#经验分享

问题&#xff1a;军保卡不允许开立附属卡&#xff0c;不能开展境外交易&#xff0c;不开通云闪付工功能&#xff08;&#xff09; A&#xff0e;A&#xff1a;正确 B&#xff0e;B&#xff1a;错误 参考答案如图所示

在线渲染3d怎么用?3d快速渲染步骤设置

在线渲染3D模型是一种高效的技术&#xff0c;它允许艺术家和设计师通过互联网访问远程服务器的强大计算能力&#xff0c;从而加速渲染过程。无论是复杂的场景还是高质量的视觉效果&#xff0c;在线渲染服务都能帮助您节省宝贵的时间。 在线渲染3D一般选择的是&#xff1a;云渲染…

React的useState的基础使用

import {useState} from react // 1.调用useState添加状态变量 // count 是新增的状态变量 // setCount 修改状态变量的方法 // 2.添加点击事件回调 // userState实现计数实例import {useState} from react// 使用组件 function App() {// 1.调用useState添加状态变量// coun…

Python下载库

注&#xff1a;本文一律使用windows讲解。 一、使用cmd下载 先用快捷键win R打开"运行"窗口&#xff0c;如下图。 在输入框中输入cmd并按回车Enter或点确定键&#xff0c;随后会出现这个画面&#xff1a; 输入pip install 你想下载的库名&#xff0c;并按回车&…

使用MATLAB的BP神经网络进行数据分类任务(简单版)

BP神经网络&#xff0c;即反向传播&#xff08;Backpropagation&#xff09;神经网络&#xff0c;是一种多层前馈神经网络&#xff0c;它通过反向传播算法来更新网络权重。这种网络结构特别适合于分类和回归任务。 MATLAB环境设置 在开始之前&#xff0c;请确保MATLAB环境已经…

【设计模式深度剖析】【5】【行为型】【迭代器模式】

&#x1f448;️上一篇:策略模式 设计模式-专栏&#x1f448;️ 文章目录 迭代器模式定义英文原话直译如何理解呢&#xff1f; 迭代器模式的角色1. Iterator&#xff08;迭代器&#xff09;2. ConcreteIterator&#xff08;具体迭代器&#xff09;3. Aggregate&#xff08;聚…

【Git】如何不管本地文件,强制git pull

要在 Git 中强制执行 git pull 操作&#xff0c;忽略本地文件的更改&#xff0c;可以按照以下步骤操作&#xff1a; 保存当前工作状态&#xff1a;如果你有未提交的更改&#xff0c;可以使用 git stash 将这些更改存储起来。 git stash强制拉取最新代码&#xff1a;使用 git re…