gitlab操作手册

news2024/11/25 14:34:59

git操作篇

1. 项目克隆

git clone git@gitlab.test.cn:pro/project1.git

2. 项目的提交

注:如果要查看文件的状态可以用git status命令:

如上图所示,文件已经修改了。

3. 项目的推送

git push origin feature/test01

注:如果要查看远程的项目源地址可以如下命令:
git remote -v

4. 分支和gitflow流

  • master分支

master分支是最终版本的分支,是正式发布使用的,是受保护的分支,在master分支上不能随意修改


  • develop分支

develop分支从master分支拉取出来,作为功能分支的集成分支,这样也方便master分支上的所有提交分配一个版本号;如图所示:
develop.jpg

1.如果在远程服务器上没有develop这个分支,那么在本地新建一个并上传
git branch develop
git push -u origin develop

2.如果远程已经存在,那么在本地直接远程check下来即可
git checkout -b develop origin/develop

3.如果功能分支需要合并进来
git pull origin //在合并进来之前最好先拉取一下,以免有冲突
git merge feature/feature-lisi

  • feature分支

feature分支也叫功能分支,就是对一个项目组按人员划分来建立分支比如张三,就是feature/feature-zhangsan,李四,就是feature/feature-lisi。功能分支不是从master中去fork分支(切记),而是将develop分支作为父分支。当功能开发完成后合并回develop分支。
这样子做的目的是每个人开发都相对独立,相互不受影响。其结构图所示:
feature.jpg

如果是新的feature分支,在远程不存在的,那么从develop中创建出功能分支
git checkout -b feature/feature-lisi develop

将本地的feature分支提交到远程服务器上
git push origin feature/feature-lisi

如果远程featrue分支已经存在
git checkout -b feature/lisi origin feature/lisi

  • release分支

到了发布的时候,专门为发布准备了一个分支就是release分支,它从develop中fork出来,这么做的目的是一个团队可以在完善当前的发布版本的同时,另一个团队可以继续开发下一个版本。
并且这个版本只做上线前的bug修复用(即测试测出来的bug修改),不能新增功能,一旦合并到master分支后,也同时要将所做的修改合并到develop分支中去。其结构图所示:
release.jpg

1. 从develop中fork一个分支
git checkout -b release-0.1 develop

2. 发布时的操作
git checkout master
git merge release-0.1
git push

3. 一定要合并回develop
git checkout develop
git merge release-0.1
git push

4. 删除发布分支
git branch -d release-0.1

  • hotfix分支

hotfix分支也叫维护分支或者热修复分支,用于快速给生产线上的产品打补丁用(比如客户在生产线上发现了紧急bug需要马上修复),这是唯一从master分支中去fork出来的分支,修复完成后,将修改的要合并到develop分支,master分支应该用新的版本号打好tag。

这样做的目的是,让团队快速解决掉问题,而不用打断其他工作或等待下一个发布。可以理解成在master分支上处理的临时发布。结构图如图所示:
hotfix.jpg

1. 从master中fork出一个分支
git checkout -b hotfix-001 master

2. 修改完bug,进行合并提交
git checkout master
git merge hotfix-001
git push

3. 切换到develop分支进行合并提交
git checkout develop
git merge hotfix-001
git push 

4. 删除热修复分支
git branch -d hotfix-001

注:在切换到某个分支的时候,必须需要对这个分支做一个拉取,以免出现冲突

git pull origin [分支名]

5. 项目还原到历史版本

如果我们开发时候,发现错了想还原到具体某一个版本,git也很方便。

  • 先通过查找日志查找版本号
git log [文件名]

15216088757735.jpg
每次,修改提交都有一个记录编号

  • 还原到某个版本
    可以从日志中找到某个日志编号进行还原,比我我要还原成2月份的一个版本

git查看版本树

git log --oneline --graph --decorate --all
git reset --hard e957e52aa922b7b95b4d6bc85159fa41d466acd3

注:如果还原到上一个版本或者上上个版本

git reset --hard HEAD^   //还原到上一个版本
git reset --hard HEAD^^  //还原到上上个版本

gitlab操作篇

gitlab master分支第一次push代码的时候只有主程序员才能推送,其他角色推送不了会报错

1.gitlab项目新建

  • 1.1 进项目首页创建空白项目(比较常用)
    image.png

  • 1.2 通过模板来进行创建(选择了模板之后,会自动生成框架,直接使用就行)

  • 1.3 还可以通过从其他git源导入进来

2.sshkey设置

  • 2.1 在本机生成sshkey
    下面以mac下面为例进行演示,windows平台下的网上自己搜索。
1. 进入.ssh目录
cd ~/.ssh

2. 生成SSH密钥
默认名称:
ssh-keygen -t rsa -C "你的个人邮箱"
自定义名称:
ssh-keygen -t rsa -f "密钥名称" -C "你的个人邮箱"
例子:
ssh-keygen -t rsa -f "id_rsa_xinhui" -C "hjc_042043@sina.cn"

接下来直接回车下去,不用输入passphrase内容,不然每次操作都要输入passphrase

3. 获取SSH公钥信息
这时在.ssh目录下会生成两个文件,私钥id_rsa和公钥id_rsa.pub两个密钥文件。
  • 2.2 在gitlab平台添加sshkey

可以将id_rsa.pub文件内容复制出来,然后黏贴到gitlab平台
image.png

添加成功之后看如图所示:

  • 2.3 如果有多个git源仓库,怎么办?

如果有多个git源库,比如既有gitlab,又有github版本库的时候,那么SSHkey需要做区分,需要在~/.ssh目录中添加一个config文件,以及known_hosts文件,config文件主要是来管理git源,known_host是来管理私钥内容,内容如下:

# gitlab
Host 192.168..0.103
HostName 192.168..0.103
User allen.huang
IdentityFile ~/.ssh/id_rsa

# github
Host github.com
HostName github.com
User hjc1985
IdentityFile ~/.ssh/id_rsa_github

# golivecc
Host 192.168.0.102
HostName 192.168.0.102
User hjc
IdentityFile ~/.ssh/id_rsa_golivecc

# 对Host进行测试:
$ ssh -T git@192.168.0.102
Welcome to GitLab, 黄锦潮!     #如果输出如下结果表示成功
ip地址 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyN
TYAAABBBJFV35BdDfJyLH83RAPFsLTrm6huT85bjxGrhrDU4YMYLXiZn8Kgz7kia2eMzVhcSADNitsGg
BDXDzZNqWch5wU=

参考:
https://segmentfault.com/a/1190000002994742
http://blog.csdn.net/baidu_35738377/article/details/54580156

3.代码上传

  • Git用户名和邮箱的配置

注:如果有多个git源,不能用 git config --global

git config user.name "你注册的用户名"
git config user.email "你注册的邮箱"
  • 创建新版本库
git clone git@192.168.0.102:git-test/demo.git
cd phptest
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

设置gitignore

在.gitignore文件中例如可以把缓存,日志类的文件忽略掉把.DS_Store (mac下有,windows下没有),thumbs.db, data/logs, data/caches等

  • 如果已存在的文件夹
cd existing_folder
git init
git remote add origin git@192.168.0.102:git-test/demo.git
git add .
git commit -m "Initial commit"
git push -u origin master
  • 如果已存在的 Git 版本库
cd existing_repo
git remote rename origin old-origin
git remote add origin git@192.168.0.102:git-test/demo.git
git push -u origin --all
git push -u origin --tags
  • git利用nginx进行域名的反向代理
#PROXY-START/
location  ~* \.(php|jsp|cgi|asp|aspx)$
{
    proxy_pass http://localhost:8099;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
}
location /
{
    proxy_pass http://localhost:8099;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    
    add_header X-Cache $upstream_cache_status;
    
    #Set Nginx Cache
    
        add_header Cache-Control no-cache;
    expires 12h;
}
server
{
    listen 80;
    server_name git.programlife.tech;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/git.programlife.tech;
    
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    #SSL-END
    
    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END
    
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    #清理缓存规则

    location ~ /purge(/.*) {
        proxy_cache_purge cache_one $host$1$is_args$args;
        #access_log  /www/wwwlogs/git.programlife.tech_purge_cache.log;
    }
    #引用反向代理规则,注释后配置的反向代理将无效
    include /www/server/panel/vhost/nginx/proxy/git.programlife.tech/*.conf;

    include enable-php-00.conf;
    #PHP-INFO-END
    
    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/server/panel/vhost/rewrite/git.programlife.tech.conf;
    #REWRITE-END
    
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }
    access_log  /www/wwwlogs/git.programlife.tech.log;
    error_log  /www/wwwlogs/git.programlife.tech.error.log;
}

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

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

相关文章

语义分割:从早期探索到深度学习的突破

语义分割:从早期探索到深度学习的突破 语义分割的端倪:从早期探索到深度学习的突破引言早期技术:图像处理与模式识别边缘检测区域生长图割(Graph Cut)聚类方法 深度学习的兴起:CNN革命2012年 AlexNet的突破全卷积网络(…

深入解剖指针篇(2)

目录 指针的使用 strlen的模拟实现 传值调用和传址调用 数组名的理解 使用指针访问数组 一维数组传参的本质 冒泡排序 个人主页(找往期文章):我要学编程(ಥ_ಥ)-CSDN博客 指针的使用 strlen的模拟实现 库函数strlen的功能是求字符串…

校园二手交易小程序|基于微信小程序的闲置物品交易平台设计与实现(源码+数据库+文档)

校园二手交易小程序目录 目录 基于微信小程序的闲置物品交易平台设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、商品信息管理 3、公告信息管理 4、论坛信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕…

JAVA操作Rabbitmq-原理讲的很详细

这篇文章来源于稀土掘金,来源:https://juejin.cn/post/7132268340541653005,主要用来收藏学习。 常见的消息队列很多,主要包括 RabbitMQ、Kafka、RocketMQ 和 ActiveMQ,相关的选型可以看我之前的系列,这篇文…

菜鸡后端的前端学习记录-2

前言 记录一下看视频学习前端的的一些笔记,以前对Html、Js、CSS有一定的基础(都认得,没用过),现在不想从头再来了,学学Vue框架,不定时更新,指不定什么时候就鸽了。。。。 忘了记一下…

【蓝桥杯51单片机入门记录】LED

目录 一、基础 (1)新建工程 (2)编写前准备 二、LED (1)点亮LED灯 (2)LED闪烁 延时函数的生成(stc-isp中生成) 实现 (3)流水灯…

无法在 word 中登录 Grammarly

目录 1. 情况描述 2. 解决方法 3. 原因分析 1. 情况描述 在浏览器中可以登录 Grammarly,但是在 word 中登录失败,大致如下图所示: 我自己没有截图,这是网上别人的图,但差不多都长这个样子。 2. 解决方法 我点击了…

Nucleosome, Recombinant Human, H2BK120ub1 dNuc, Biotinylated

EpiCypher(国内授权代理商欣博盛生物)是一家为表观遗传学和染色质生物学研究提供高质量试剂和工具的专业制造商。EpiCypher生产的在E. coli中表达的重组人单核小体(组蛋白H2A、H2B、H3和H4各2个;accession numbers:H2A-P04908;H2B-O60814;H3.1-P68431;H4…

正点原子--STM32中断系统学习笔记(2)

引言 上篇帖子STM32中断系统学习笔记(1)是理论,这篇帖子开始实战,目标是通过按键实现LED的控制。 1.工程建立 以正点原子HAL库 实验1 跑马灯实验为基础,复制工程,在“Drivers--BSP”目录下建立EXTI文件夹,并创建ext…

mfc140.dll丢失的几种修复方式,有效的解决文件丢失问题

mfc140.dll是Microsoft Foundation Class (MFC)库中的一个非常重要的DLL文件。它承载了许多被执行程序使用的函数和资源。这个库主要被广泛应用于开发Windows操作系统上的应用程序。然而,有时候我们可能会遭遇到mfc140.dll缺失或损坏的情况,这会导致依赖…

力扣hot100 二叉树的右视图 DFS BFS 层序遍历 递归

Problem: 199. 二叉树的右视图 文章目录 思路&#x1f496; BFS&#x1f496; DFS 思路 &#x1f469;‍&#x1f3eb; 甜姨 &#x1f496; BFS ⏰ 时间复杂度: O ( n ) O(n) O(n) &#x1f30e; 空间复杂度: O ( n ) O(n) O(n) class Solution {public List<Integer&…

探究HMAC算法:消息认证与数据完整性的完美结合

Hash-based Message Authentication Code&#xff08;基于哈希的消息认证码&#xff0c;简称HMAC&#xff09;算法作为一种广泛应用的消息认证码&#xff08;MAC&#xff09;算法&#xff0c;在现代信息安全领域起着至关重要的作用。本文将从算法原理、优缺点、实际应用等方面&…

linux中vim的操作

(码字不易&#xff0c;关注一下吧w~~w) 命令模式&#xff1a; 当我们按下esc键时&#xff0c;我们会进入命令模式&#xff1b;当使用vi打开一个文件时也是进入命令模式。 光标移动&#xff1a; 1 保存退出&#xff1a;ZZ 2 代码格式化&#xff1a;ggG 3 光标移动&#xff…

【数据结构 07】AVL树

目录 一、二叉搜索树 二、AVL树 2.1 左单旋 2.2 右单旋 2.3 左右双旋 2.4 右左双旋 三、AVL.h 四、test.cpp 一、二叉搜索树 二叉搜索树&#xff0c;又称二叉排序树&#xff08;Binary Search Tree&#xff09;&#xff0c;相比于普通二叉树&#xff0c;BST的特性有&a…

springboot完成一个线上图片存放地址+实现前后端上传图片+回显

1.路径 注意路径 2.代码&#xff1a;&#xff08;那个imagePath没什么用&#xff0c;懒的删了&#xff09;&#xff0c;注意你的本地文件夹要有图片&#xff0c;才可以在线上地址中打开查看 package com.xxx.common.config;import org.springframework.beans.factory.annotat…

一站式在线协作开源办公软件ONLYOFFICE,协作更安全更便捷

1、ONLYOFFICE是什么&#xff1f; ONLYOFFICE是一款功能强大的在线协作办公软件&#xff0c;可以创建编辑Word文档、Excel电子表格&#xff0c;PowerPoint&#xff08;PPT&#xff09;演示文稿、Forms表单等多种文件。ONLYOFFICE支持多个平台&#xff0c;无论使用的是 Windows、…

vue3.0中从proxy中取值

使用vue3.0时&#xff0c;因为底层是使用proxy进行代理的所以当我们打印一些值的时候是proxy代理之后的&#xff0c;是Proxy 对象&#xff0c;Proxy对象里边的[[Target]]才是真实的对象。也是我们需要的 第一种获取target值的方式&#xff1a; import { toRaw } from vue; le…

【Jenkins】配置及使用|参数化|邮件|源码|报表|乱码

目录 一、Jenkins 二、Jenkins环境搭建 1、下载所需的软件包 2、部署步骤 3、其他 三、Jenkins全局设置 &#xff08;一&#xff09;Manage Jenkins——Tools系统管理->全局工具配置分别配置JDK、Maven、Allure、Git&#xff0c;可以配置路径或者直接选择版本安装 1…

[C++]继承(续)

一、基类和派生类对象赋值转换 在public继承时&#xff0c;父类和子类是一个“is - a”的关系。 子类对象赋值给父类对象/父类指针/父类引用&#xff0c;我们认为是天然的&#xff0c;中间不产生临时对象&#xff0c;也叫作父子类赋值兼容规则&#xff08;切割/切片&#xff…

【C/C++ 03】堆排序

堆排序是选择排序算法的进阶&#xff0c;也就是通过二叉树节点存储数组&#xff0c;并通过root节点存储最值与二叉树最后一个节点进行交换完成排序&#xff0c;降低了时间复杂度。在大数据时代&#xff0c;堆排序常用于处理Top-K问题。 排序对象&#xff1a;数组时间复杂度&am…