当前位置: 首页 > news >正文

Git与Gitlab

第1章Git概述

Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。

代码托管中心,记录每个版本的代码,从项目创建到现在使用的代码,中间所有的修改都有记录。

1. 何为版本控制

版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。

版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。

2. 为什么需要版本控制

为了让多人开发代码时,对代码修改有记录。如果修改错了可以及时回滚(人们能够清楚知道别人对代码做了什么)

3. 版本控制工具

(1)集中式版本控制工具(CVS、SVN、VSS)

将所有代码集中存储在一台机器上,人们通过连接这台机器来进行操作代码。劣势如果发生单点故障,整个项目就要停滞。

(2)分布式版本控制工具(git)

客户提取的不是最新版本的文件快照,而是将代码仓库完整的存储到本地。这样任何一处协同用的工作发生故障,事后可以通过其他客户端的本地仓库进行恢复。

分布式版本控制解决了集中式版本控制两个缺陷:

  1. 服务器断网情况也可以开发(版本控制是在本地进行的(修改完成)才推送到服务器)
  2. 每个客户端保存的是完整的项目(包含历史记录)

4. Git简史

5 Git工作机制

本地代码----本地缓存区----本地库----服务器dev分支----merge服务器master

6 Git和代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般简单称为远程库。

(1)局域网

gitlab

(2)互联网

Github(外网)

https://github.com/

Gitee码云(国内网站)

https://gitee.com/

第2章 Git安装

安装包下载官网地址:https://git-scm.com/或https://github.com/git-for-windows/git/releases

​查看GNU协议,可以直接点击下一步。

选择Git安装位置,要求是非中文并且没有空格的目录,然后下一步。

Git选项配置,推荐默认设置,然后下一步。

Git安装目录名,不用修改,直接点击下一步。

Git的默认编辑器,建议使用默认的Vim编辑器,然后点击下一步。

默认分支名设置,选择让Git决定,分支名默认为master,下一步。

修改Git的环境变量,选第一个,不修改环境变量,只在Git Bash里使用Git。

选择后台客户端连接协议,选默认值OpenSSL,然后下一步。

配置Git文件的行末换行符,Windows使用CRLF,Linux使用LF,选择第一个自动转换,然后继续下一步。

选择Git终端类型,选择默认的Git Bash终端,然后继续下一步。

选择Git pull合并的模式,选择默认,然后下一步。

选择Git的凭据管理器,选择默认的跨平台的凭据管理器,然后下一步。

其他配置,选择默认设置,然后下一步。

实验室功能,技术还不成熟,有已知的bug,不要勾选,然后点击右下角的Install按钮,开始安装Git。

点击Finsh按钮,Git安装成功!

右键任意位置(win11显示更多选项),在右键菜单里选择Git Bash Here即可打开Git Bash命令行终端。

在Git Bash终端里输入git --version查看git版本,如图所示,说明Git安装成功。

第3章 Git常用命令

git常用命令
命令名称作用
git config --global user.name 用户名设置用户签名
git config --global user.email 邮箱设置用户邮箱
git init初始化本地库
git status查看本地库状态
git add 文件名添加到暂存区
git commit -m "日志信息" 文件名提交到本地库
git reflog查看历史记录
git reset --hard 版本号版本穿梭
git branch -a

 查看所有分支

git checkout branch_name:切换到已存在的分支

git checkout -b new_branch_name:切换到已经存在的分支之前创建一个新的本地分支

git checkout -b local_branch_name origin/remote_branch_name:切换到远程分支

案例实操

1、全局范围的签名设置

git config --global user.name lishaoxing
git config --global user.email lishaoxing@163.com
git config --list                # 查看全局配置
cat ~/.gitconfig               # cat linux中查看文本的命令  ~ 家 [你当前用户的家]/ .gitconfig

Notes:

签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git首次安装必须设置一下用户签名,否则无法提交代码。【可以在gitconfig文件中更改】

※注意:这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系

2、初始化本地库

结果出现.git隐藏文件,就说明该文件夹被git管理。

 3、查看本地库状态

(1)首次查看(工作区没有文件)

(2)新增文件

(3)再次查看(检测到未追踪文件)

4、添加到暂存区

查看状态(检测到暂存区有新文件)

5、提交到本地库

查看状态(没有文件需要提交)

6、修改文件

7、历史版本

8、版本穿梭

Git切换版本,底层其实是移动的HEAD指针

第4章 Git客户端便捷操作

使用命令行操作git相对而言是非常不方便的,查看内容也不是很直观,所有官方推荐使用Git的GUI 客户端来完成页面化操作。

GitHub

GitHub下载链接:https://desktop.github.com/

1、登陆上GitHub账号、创建一个新的仓库

2、创建仓库

3、GitHub客户端登陆git账号

4、克隆项目到本地(本地文件夹要为空

5、修改后的项目提交的github

Gitee

GitHub的网站有时候会连接不上,无法登录。可以使用阿里提供的Git远程仓库网站Gitee来代替。

首先也是登录Gitee官网注册账号并登录

1、创建一个项目

2、使用github软件克隆(类似GitHub操作,知识换成URL,URL一定具体到仓库)

2、输入gitee的账号密码

3、克隆完成后后续就和上边一样了。

第5章 GitLab的部署与使用

1.为什么使用GitLab-开发运维一体化

使用git,还需要一个远程代码仓库。常见的github、gitee这种远程代码仓库,公司中一般不会使用,因为他们是使用外网的,不够安全。一般企业都会搭建一个仅内网使用的远程代码仓库,最常见就是 GitLab。

2. 部署安装GitLab

安装包文件下载地址:https://pan.baidu.com/s/1fBia_Jt3wLsGO_zeJnnqHw?pwd=6666

2.1 安装部署

1)需要开启ssh:(已开启可跳过)

sudo systemctl status sshd
sudo systemctl enable sshd
sudo systemctl start sshd

2)防火墙开放http、https服务:(已关闭防火墙可跳过)

sudo systemctl status firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld

2.1.2 rpm 包安装

1)上传安装包

下载地址:https://packages.gitlab.cn/#browse/search/

安装包较大,建议下载好手动上传服务器。这里上传到/opt/software

2)编写安装脚本

cd ~/bin
vim gitlab-install.sh

脚本内容如下:

sudo yum install -y curl policycoreutils-python openssh-server perl
curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash
sudo rpm -ivh gitlab-jh-16.6.1-jh.0.el7.x86_64.rpm
sudo yum install -y postfix
sudo systemctl enable postfix
sudo systemctl start postfix

 3)修改脚本执行权限并执行

chmod +x gitlab-install.sh
sh gitlab-install.sh

4)修改external_url

sudo vim /etc/gitlab/gitlab.rb

在文件中找到external_url,修改为如下内容

external_url 'http://192.168.10.104'

保存退出

5)修改host

sudo vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml.example

找到gitlab.host修改为如下内容

保存退出

修改文件名称

sudo mv /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml.example /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

 6)重装需要彻底卸载

1 卸载gitlab

sudo rpm -e gitlab-jh-16.6.1

2 删除gitlab文件

sudo rm -rf /etc/gitlab
sudo rm -rf /var/opt/gitlab
sudo rm -rf /opt/gitlab

3 重装如果卡在sudo gitlab-ctl reconfigure配置命令上,可以使用另外一个窗口执行

sudo systemctl restart gitlab-runsvdir

2.1.3 执行初始化

执行过程大概需要3分钟:

sudo gitlab-ctl reconfigure

2.1.4 启停命令

sudo gitlab-ctl start

2)停止命令

sudo gitlab-ctl stop

2.1.5 修改 root 密码

1)访问Web页面

直接访问hostname:192.168.10.104

2)查看root密码

账号root,密码将随机生成并在 /etc/gitlab/initial_root_password 中保存24 小时:

sudo cat /etc/gitlab/initial_root_password

修改密码:

2.1.6 设置简体中文

回到首页,可以看到变成中文:

3. 使用GitLab完成团队管理

去到一家公司,应该是已经有了GitLab平台,运维人员拥有root管理员账号。而作为一名普通的开发人员,你的leader和同事都拥有各自的GitLab账号和不同权限。入职后,你只需要申请开通GitLab账号和对应权限,不需要你来操作。

3.1创建用户

为了更符合公司实际,我们假设数据组的leader账号为tutou,你是lishaoxing。

创建一个leader的账号:

再申请一个lishaoxing账号

用户会收到重置密码的邮件,也可以由管理员设置:


3.2 创建群组

在gitlab里,可以创建出组、组下的子组。在小公司里可以看见gitlab里边会创建出后端,大数据等等一系列组。尽量不要使用中文创建组名, 可以在组信息中的备注编写中文描述以及中文组名, 组内人员名称也尽量用全拼命名。
对于人员权限以及角色的控制也比较简单,有如下五种:

Owner:最高权限,谁去创建组,这个组就被谁拥有,它可以开除管理员,但管理员无法操作owner的角色。

Maintainer:(管理员-只是具备sudo权限的用户)管理员一般是给小组的组长,或者是给产品线的总监设定。

Developer:是干活的人,就是写代码的程序员,可以进行代码的上传以及代码的下载,不能下载其他的组内的代码,只能下载它们组的代码。

Repoter:比如现在有需求,其他组的大牛到我们组过来指导工作,要审视我们的代码,人家就提出需要一个权限,我不能给它developer因为它会改你代码,其他组的人不能改我们组的代码,所以就给一个repoter权限,他只能看,只读权限。

guest:不用看,匿名,直接去掉。一般出现在从ldap中把离职人员的信息删掉,再去gitlab查这个人的时候,它就是一个guest用户(匿名)需要再到gitlab把它删掉(不删也没事)。

下面,我们假设研发部群组是rdc,下属后端组、前端组、大数据组等子群组:

1)创建研发中心群组rdc

2)创建大数据组

在研发中心组下,再创建一个大数据组(当然,其他还会有后端组、前端组等):

当然,根据公司情况还可以进一步在数据组下面细分子组(比如:离线、实时、湖等),这里我们就不再细分。

将数据组的leader设为bigdata的负责人:

将lishaoxing添加为普通的开发人员:

现在我们就有一个顶级群组rdc,其下有一个子群组bigdata,组内有管理员tutou,开发人员lishaoxing。

4.使用IDEA兼容GitLab

1)安装 GitLab 插件

2)配置 SSH 免密登录

ssh-keygen -t rsa -C lishaoxing@123.com

到用户目录下.ssh查看id_rsa.pub文件

添加到GitLab中:

3)获取 GitLab 个人令牌

创建后,可以查看和复制生成的token:

4)添加 GitLab 服务

5)修改默认分支的保护策略

第6章 企业项目构建与开发分支

1. GitFlow工作流介绍

在项目开发过程中使用 Git 的方式常见的有:

1.1 集中式工作流

所有修改都提交到 Master 这个分支。比较适合极小团队或单人维护的项目,不建议使用这种方式。

1.2 功能开发工作流

功能开发应该在一个专门的分支,而不是在 master 分支上。适用于小团队开发。

1.3 GitFlow工作流

公司中最常用于管理大型项目。为功能开发、发布准备和维护设立了独立的分支,让发布迭代过程更流畅。

1.4 Forking工作流

在 GitFlow 基础上,充分利用了 Git 的 Fork 和 pull request 的功能以达到代码审核的目的。一般用于跨团队协作、网上开源项目。

2. 各分支功能介绍

2.1 主干分支 master

主要负责管理正在运行的生产环境代码,永远保持与正在运行的生产环境完全一致。为了保持稳定性一般不会直接在这个分支上修改代码,都是通过其他分支合并过来的。

2.2 开发分支 develop

主要负责管理正在开发过程中的代码。一般情况下应该是最新的代码。

2.3 功能分支 feature

为了不影响较短周期的开发工作,一般把中长期开发模块,会从开发分支中独立出来。 开发完成后会合并到开发分支。

2.4 准生产分支(预发布分支) release

较大的版本上线前,会从开发分支中分出准生产分支,进行最后阶段的集成测试。该版本上线后,会合并到主干分支。生产环境运行一段阶段较稳定后可以视情况删除。

2.5 bug 修理分支 hotfix

主要负责管理生产环境下出现的紧急修复的代码。 从主干分支分出,修复完毕并测试上线后,并回主干分支和开发分支。并回后,视情况可以删除该分支。

3. 创建项目与分支管理

3.1 idea与远程仓库连接

创建公钥和私钥,将公钥复制到远程gitlab服务器。

ssh-keygen -t rsa -C gitlab账号

用文本编辑器将该文件打开,具体路径如下:

将内容复制到

创建访问令牌,并将其复制到本地idea。

在本地idea上输入服务器地址(图片错误了)http://192.168.10.104就行了

这是将本地项目上传到gitlab(之前没有该项目)

这是从gitlab服务器上下载项目。

修改文件之后就可以提交了。

相关文章:

Git与Gitlab

第1章Git概述 Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。 代码托管中心,记录每个版本的代码,从项目创建到现在使用的代码,中间所有的修改都有记录。 1. 何为版本控制 版本控制是…...

MySQL数据库从入门到精通(下)

对表做了修改之后,记得点击对应图标按钮重新执行一下。 1.创建角色表 数据库一开始就要设计好,轻易不要改动。一个账号下可能有多个角色,所以我们单独再创建另一个表role用来存储所有的角色信息。其中idrole表示角色id,name表示名…...

从融媒到智媒,小程序框架可助力传媒企业在AI实践下的服务变现

过去5年,媒体行业一直都在进行着信息化建设向融媒体平台建设的转变。一些融媒体的建设演变总结如下: 新闻终端的端侧内容矩阵建设,如App新闻端,社交平台上的官方媒体等 新闻本地生活双旗舰客户端,兼顾主流媒体核心宣传…...

MES系统在电线电缆行业生产上的应用

MES系统在线缆行业的应用可以带来多重价值,包括提高生产效率、降低生产成本、提高产品质量、优化库存管理、改善生产环境和提高企业竞争力等方面。因此,在电线电缆行业中广泛应用MES系统可以提高企业的经济效益和社会效益,推动企业发展和行业…...

怎么把图片上的字去掉

将图片上的字去掉通常需要使用图像编辑软件或在线工具。以下是一些常用的方法和步骤: 使用Adobe Photoshop: 打开Photoshop,导入需要编辑的图片。 选择“橡皮擦工具”或“克隆图章工具”。 如果使用“橡皮擦工具”,调整橡皮擦的…...

BFS和DFS优先搜索算法

1. BFS与DFS 1.1 BFS DFS即Depth First Search,深度优先搜索。它是一种图遍历算法,它从一个起始点开始,逐层扩展搜索范围,直到找到目标节点为止。 这种算法通常用于解决“最短路径”问题,比如在迷宫中找到从起点到终…...

python将两张图片对齐

目录 需要对齐的照片如下: 源码: 结果: 需要对齐的照片如下: 源码: import cv2 import numpy as np from matplotlib import pyplot as plt# 读取两张图片 imgA cv2.imread(./out/out/3.png) imgB cv2.imread(./…...

Linux修炼之路之初识操作系统+基础指令(1)

目录 引言 一:对操作系统(OS)的简单了解 1.操作系统(OS) 是什么 2.操作系统好坏的衡量标准 3.操作系统存在的重要性 4.理解所有在计算机上的操作 二:Linux与windows操作的特点区别 三:基础指令 1.ls 指令 1.使用 2.常用选项 2.…...

Flink中基于Chandy-Lamport算法的分布式快照实现详解

Apache Flink利用了一种基于Chandy-Lamport分布式快照算法的变体——异步屏障快照(Asynchronous Barrier Snapshotting, ABS)来实现其强大的容错机制。Chandy-Lamport算法最初由K.M. Chandy和Leslie Lamport于1985年提出,是一种用于分布式系统…...

软件3班20240513

java.util.PropertyResourceBundle4554617c package com.yanyu;import java.sql.*; import java.util.ResourceBundle;public class JDBCTest01 {public static void main(String[] args) throws SQLException { // 获取属性配置文件ResourceBundle bundle Res…...

【小程序】怎么优化小程序的性能

优化小程序的性能是提高用户体验和确保应用顺畅运行的关键。以下是一些优化小程序性能的方法: 1. 代码优化2. 图片优化3. 网络请求优化4. 页面渲染优化5. 分包加载6. 使用性能分析工具7. 后端优化8. 用户体验优化 1. 代码优化 精简代码:删除不必要的代码…...

告别信用卡绑定烦恼:探索这个全功能的Azure语音替代品,包含AI视频制作!(微软Azure语音替代方案)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 语音合成的替代方案📝 功能特色📝 使用步骤示例⚓️ 相关链接 ⚓️📖 介绍 📖 虽然微软Azure语音服务为个人用户提供了充足的免费语音合成额度,但其注册过程中的信用卡绑定要求、繁琐的API配置步骤却…...

酷开科技依托酷开系统“硬件+内容”产业布局,抢占全球机遇!

2024年3月26日,创维集团发布了2023年年度业绩报告,去年全年实现了总营业额690.31亿元较上一年的534.91亿元整体营业额增长了29.1%。然而,值得注意的是,2023年度,创维集团智能家电业务的营收306.37亿元,较上…...

从离线到实时:无锡锡商银行基于 Apache Doris 的数据仓库演进实践

作者:武基鹏,无锡锡商银行 大数据技术经理 编辑整理:SelectDB 技术团队 导读:为实现数据资产的价值转化以及全面数字化、智能化的风险管理,无锡锡商银行大数据平台经历从 Hive 离线数据仓库到 Apache Doris 实时数据仓…...

网易云如何改ip地址到另外城市

在数字化时代,网络音乐平台已经成为我们日常生活中不可或缺的一部分。然而,有时候我们可能会因为某些原因想要改变自己的IP地址,网易云音乐作为国内领先的音乐平台,其强大的功能和丰富的音乐资源吸引了大量用户。那么,…...

Golang 开发实战day13 - Reciver Functions

🏆个人专栏 🤺 leetcode 🧗 Leetcode Prime 🏇 Golang20天教程 🚴‍♂️ Java问题收集园地 🌴 成长感悟 欢迎大家观看,不执着于追求顶峰,只享受探索过程 Golang 开发实战day13 - 接收…...

ZL-016D多通道小鼠主动跑轮系统主要研究动物生活节律

简单介绍: 多通道小鼠主动跑轮系统是由动物本身自发运动来推动跑轮转动。在这种构型中,笼内动物长期活动的信息,如跑轮转动方向、转数、累计总行程等,能够使用编码器进行长度计记录。此装置由转轮组件、笼体、以及转动方向速度传…...

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (九)

LlaMA 3 系列博客 基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (一) 基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (二) 基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (三) 基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (四) 基于 LlaMA…...

计算机类的英语

Algorithm(算法)Binary code(二进制代码)Byte(字节)Cache(缓存)Database(数据库)Encryption(加密)Firewall(防火墙&#x…...

深⼊理解指针(5)

目录 1. 回调函数是什么?1.1 使用回调函数修改 2. qsort使⽤举例2.1 使⽤qsort函数排序整型数2.2 使⽤qsort排序结构数据按年龄排序2.3 使⽤qsort排序结构数据按名字排序2.4整体代码 3. qsort函数的模拟实现3.1 整型数组的实现3.2 结构体按名字排序实现3.3 结构体按…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...

Spring Boot面试题精选汇总

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

今日科技热点速览

🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...