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

前言:给后端工程师使用的版本控制器,本质上类似带时间标记的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.mfbz.cn/a/691127.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python cProfile 输出解析及其解决方案

cProfile 是 Python 中用于性能分析的内置模块,它可以帮助你确定程序中哪些部分消耗了最多的时间。通常,使用 cProfile 会输出大量的数据,需要进行解析和分析。下面是关于 cProfile 输出解析及其解决方案的一些提示: 1、问题背景 …

2024-06-08 Unity 编辑器开发之编辑器拓展9 —— EditorUtility

文章目录 1 准备工作2 提示窗口2.1 双键窗口2.2 三键窗口2.3 进度条窗口 3 文件面板3.1 存储文件3.2 选择文件夹3.3 打开文件3.4 打开文件夹 4 其他内容4.1 压缩纹理4.2 查找对象依赖项 1 准备工作 ​ 创建脚本 “Lesson38Window.cs” 脚本,并将其放在 Editor 文件…

力扣经典面试题-旋转链表(Java)

1.题目描述:给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 示例 1: 输入:head [1,2,3,4,5], k 2 输出:[4,5,1,2,3] 示例 2: 输入:head [0,1,2], k …

壁纸动态-Mac电脑-4K超高清[po破]动态壁纸[解]Dynamic WallPaper 安装使用教程

Mac分享吧 文章目录 效果一、准备工作二、开始安装1、双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功 三、运行调试1、打开软件,选择自己喜欢的壁纸2、调整设置,使多个壁…

消息队列笔记

异步技术 企业级应用中广泛使用的三种异步消息传递技术 原文链接:https://blog.csdn.net/qq_55917018/article/details/122122218 三种异步消息传递技术 JMS (java message service) 一个Java规范,等同于JDBC规范,提供了与消息服务相关的…

语法分析!!!

一、实验题目 根据给定文法编写调试预测分析程序&#xff0c;对任意输入串用预测分析法进行语法分析。 二、实验目的 加深对预测分析法的理解。 三、实验内容 四、实验代码 #include <iostream> #include <stdio.h> #include <string> #include <…

elasticsearch hanlp插件自定义分词配置(停用词)

[Toc](elasticsearch hanlp插件自定义分词配置(停用词)) 既然可以自定义关键词&#xff0c;那么自然也是可以自定义停用词的。 背景 由于在使用elasticsearch hanlp(以下简称es hanlp)的过程中&#xff0c;分词会出现一些无用的词&#xff0c;比如各种标点符号或者没有意义的…

二叉排序树--c++

【相关知识】 二叉排序树&#xff08;也称二叉查找树&#xff09;&#xff1a;或者是一棵空的二叉树&#xff0c;或者是具有下列性质的二叉树&#xff1a; ⑴ 若它的左子树不空&#xff0c;则左子树上所有结点的值均小于根结点的值&#xff1b; ⑵ 若它的右子树不空&#xff0c…

vivado HW_BITSTREAM、HW_CFGMEM

HW_比特流 描述 从比特流文件创建的硬件比特流对象hw_bitstream&#xff0c;用于关联 在Vivado的硬件管理器功能中使用硬件设备对象hw_device 设计套件。 比特流文件是从具有write_bitstream的放置和路由设计创建的 命令硬件位流对象是使用 create_hw_bitstream命令&#xff0c…

【Vue】vuex 的使用 - 创建仓库

通用的地方我们一般会称之为仓库 1.安装 vuex 安装vuex与vue-router类似&#xff0c;vuex是一个独立存在的插件&#xff0c;如果脚手架初始化没有选 vuex&#xff0c;就需要额外安装。 yarn add vuex3 或者 npm i vuex32.新建 store/index.js 专门存放 vuex ​ 为了维护项目…

vue2中如何使用函数式组件

vue2 中如何使用函数式组件 用 render 定义函数式组件如何处理 props如何在函数式组件中触发自定义事件&#xff1f;injection如何使用 computed 和 methods定义一个函数式组件的 MyButton函数式组件有何优势哪种场景适合使用函数式组件函数式组件的问题参考 函数式组件&#x…

MySQL-相关日志

官方文档 1、MySQL支持的日志 MySQL有不同类型日志文件&#xff0c;用来存储不同类型的日志&#xff0c;分别为 二进制日志、错误日志、通用查询日志、慢查询日志、中继日志、数据定义语句日志 慢查询日志&#xff1a;记录所有执行时间超过 long_query_time的所有查询&#xf…

【 技术栈】技术方案到底怎么写?

文章目录 一、背景二、技术方案重要性三、常见的技术方案有哪些内容1、系统用例2、功能整体链路2.1、核心业务流程 3、数据库设计4、接口设计5、非功能设计5.1、性能与稳定性5.2、监控 7、系统风险点评估 四、总结 一、背景 工作中&#xff0c;有一些需求或者技术改造&#xf…

前端开发高频面试题

好的&#xff0c;以下是对您提出的问题的详细回答&#xff1a; 说说vue动态权限绑定渲染列表&#xff08;权限列表渲染&#xff09; Vue中动态权限绑定渲染列表通常涉及以下步骤&#xff1a; 首先&#xff0c;通过API请求从服务器获取当前用户的权限数据。在Vue组件中&#xff…

uc/OS移植到stm32实现三个任务

文章目录 一、使用CubeMX创建工程二、uc/OS移植三、添加代码四、修改代码五、实践结果六、参考文章七、总结 实践内容 学习嵌入式实时操作系统&#xff08;RTOS&#xff09;,以uc/OS为例&#xff0c;将其移植到stm32F103上&#xff0c;构建至少3个任务&#xff08;task&#xf…

[pixi.js] 入门简单案例 简易时钟

老实说pixi虽然之前拿来做个几个简单的游戏&#xff0c;但是是好久前的了&#xff0c;又忘了&#xff0c;现在算是重新入门。 官网版本已经更新到v8去了&#xff0c;而react相关的pixi库pixi-react 虽然支持react18 但还是v6-v7的版本&#xff0c;既然已经看了v8的文档&#xf…

Web 版 | 开源数据库设计软件 | drawdb

文章目录 简介快速运行方式 1:本地运行方式 2:Docker 构建并运行方式 3:Docker 运行参考🚀 目标: 安装一个 Web 版本的 ER 图设计软件! 👉 GitHub: https://github.com/drawdb-io/drawdb 【11.7k ⭐】 简介 DrawDB:Free, simple, and intuitive database design …

【iOS】UI——关于UIAlertController类(警告对话框)

目录 前言关于UIAlertController具体操作及代码实现总结 前言 在UI的警告对话框的学习中&#xff0c;我们发现UIAlertView在iOS 9中已经被废弃&#xff0c;我们找到UIAlertController来代替UIAlertView实现弹出框的功能&#xff0c;从而有了这篇关于UIAlertController的学习笔记…

Idea解决堆栈溢出

废话不说了&#xff0c;这问题搞了我两天&#xff0c;最近在用内网办公&#xff0c;没用公网&#xff0c;所以博客暂时没更新

堆排序-调整算法

个人主页点这里!~ 1.堆 了解堆排序首先要了解一下堆这个数据结构 堆&#xff08;Heap&#xff09;是一种特殊的树形数据结构&#xff0c;它通常被表示为一个完全二叉树或近似完全二叉树&#xff0c;并且满足堆性质&#xff08;Heap Property&#xff09;。堆主要分为两种&…