gitlab操作手册

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 develop2.如果远程已经存在,那么在本地直接远程check下来即可
git checkout -b develop origin/develop3.如果功能分支需要合并进来
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 develop2. 发布时的操作
git checkout master
git merge release-0.1
git push3. 一定要合并回develop
git checkout develop
git merge release-0.1
git push4. 删除发布分支
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 master2. 修改完bug,进行合并提交
git checkout master
git merge hotfix-001
git push3. 切换到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 ~/.ssh2. 生成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内容,不然每次操作都要输入passphrase3. 获取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 Cacheadd_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.mzph.cn/news/661486.shtml

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

相关文章

Qt应用软件【协议篇】modbus-tcp示例

文章目录 APIModbus TCP 主机(客户端)示例Modbus TCP 从机(服务器)示例API QModbusDevice: 所有 Modbus 设备的基类,提供了设备的基本功能,例如连接、断开连接、状态和错误处理。QModbusClient: 用于实现 Modbus 客户端功能的基类。它派生自 QModbusDevice。QModbusServ…

nodejs+vue+ElementUi宠物领养救助网站0w6wc

宠物领养救助平台采用B/S架构,数据库是MySQL。网站的搭建与开发采用了先进的nodejs进行编写,使用了vue框架。该系统从两个对象:由管理员和用户来对系统进行设计构建。主要功能包括:个人信息修改,对用户、宠物类别、宠物…

深信服技术认证“SCSA-S”划重点:安全事件管理处置

为帮助大家更加系统化地学习网络安全知识,以及更高效地通过深信服安全服务认证工程师考核,深信服特别推出“SCSA-S认证备考秘笈”共十期内容,“考试重点”内容框架,帮助大家快速get重点知识~ 划重点来啦 *点击图片放大展示 深信…

MySQL-运维-主从复制

一、概述 二、原理 三、搭建 1、服务器准备 2、主库配置 (1)、修改配置文件/etc/my.cnf (2)、重启MySQL服务器 (3)、登录mysql,创建远程链接的账号,并授予主从复制权限 &#xff0…

shell脚本-免交互

一、Here Document免交互: 1.交互概述: 交互:当计算机播放某多媒体程序的时候,编程人员可以发出指令控制该程序的运行,而不是程序单方面执行下去,程序在接受到编程人员相应的指令后而相应地做出反应。 对于…

铁轨语义分割(Unet结合resnet系列)

数据介绍 一类是图片,一类是图像标签。 引入库,处理数据 import torch.nn as nn import torch import torch.nn.functional as F import os from PIL import Image import torch from torch.utils.data import Dataset import torchvision.transfor…

Unity SRP 管线【第七讲:URP LOD实现以及Reflections反射探针】

目录 一、URP LOD 组件1、LOD Group的使用2、LOD切换原理Cross Fade(淡入淡出)模式Animated Cross-Fading如果未设置Clip,并且Fade Transition Width不为0LOD物体烘培 SpeedTree 模式 二、反射探针1. 获取反射探针数据2. 环境光照明 IBL3. 反射探针(Refl…

iOS自动打包如何用Python实现

在Python中实现iOS自动打包的过程需要使用第三方库和工具,如pyobjc和appdirs。以下是一个基本的Python脚本示例,用于自动打包iOS应用程序: python复制代码 import os import appdirs import subprocess import pyobjc # 获取应用程序目…

部署前后端分离项目详细教程

部署前后端分离项目详细教程 1、准备工作 首先你需要一台服务器,然后在服务器上安装好你所需要的环境,我这里用的宝塔界面来安装环境。 如果有人不知道怎么安装宝塔界面,可参考这篇文章,如果不知道怎么买服务器,可以参…

Python学习笔记——Collatz序列

Collatz序列,也称为3n1问题,遵循以下3个规则获得序列中的下一个数: 1、如果n是偶数,则下一个数 n n / 22、如果n是奇数,则下一个数 n n * 3 13、如果n为1,则停止计算;否则重复计算获取下一个数 从任意一…

golang网络编程day4

golang网络编程day4 get和post的区别resful编程golang请求头golangheader内容类型和字符编码http请求头缓存和过期应用golang 请求头跨域请求应用http请求头用户代理应用golang响应头 get和post的区别 在前面的学习我只在应用场景上做了一个区别的举例,这里是进一步的学习有哪…

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

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

前端工程化基础(四):Git代码版本控制工具详解

Git版本控制工具详解 认识版本控制(版本控制) 是维护 工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程版本控制也是 一种软件工程技巧,借此能在软件开发的过程中,确保不同的人所编辑的同一程序都能得到同步…

MySQL的存储格式,MySQL的触发器

1,MySQL的存储格式 在MySQL中,创建存储函数使用create function关键字,其基本形式如下: create function func_name ( [param_name type[ ,...]]) returns type [characteristic ... ] begin routine_body end; 参数说明: (1) func_…

tcp/ip模型中,帧是第几层的数据单元?

在网络通信的世界中,TCP/IP模型以其高效和可靠性而著称。这个模型是现代互联网通信的基石,它定义了数据在网络中如何被传输和接收。其中,一个核心的概念是数据单元的层级,特别是“帧”在这个模型中的位置。今天,我们就…

密码输入检测

文章目录 题目描述输入描述输出描述示例一说明代码解释 题目描述 给定用户密码输入流 input&#xff0c;输入流中字符’<表示退格&#xff0c;可以清除前一个输入的字符&#xff0c;请你编写程序&#xff0c;输出最终得到的密码字符&#xff0c;并判断密码是否满足如下的密…

MySQL 处理JSON字符串

目录 前言 JSON值的部分更新 创建JSON值 JSON 值的规范化、合并和自动包装 合并JSON值 搜索和修改JSON值 JSON路径 JSON值的比较和排序 JSON值的聚合 前言 现在很多数据会以json格式存储&#xff0c;如果你还在用like查询json字符串&#xff0c;那你就OUT了&#xff0…

详解 Kruskal 算法的实现

一、算法原理 Kruskal 算法用于求最小生成树&#xff0c;它的主要思路是基于并查集&#xff0c;算法的主要原理如下&#xff1a; 假设图中有 n 个点&#xff0c;则&#xff1a; step 1&#xff1a;Kruskal 算法假定初始时每个点都只属于自己所在的并查集&#xff08;即初始时…

有趣的css - 简约的动态关注按钮

页面效果 此效果主要使用 css 伪选择器配合 css content 属性&#xff0c;以及 transition(过渡)属性来实现一个简约的动态按钮效果。 此效果可适用于关注按钮、详情按钮等&#xff0c;增强用户交互体验。 核心代码部分&#xff0c;简要说明了写法思路&#xff0c;看 css 部分的…

AUTOSAR内存篇 -Flash EEPROM Emulation(FEE)

文章目录 简介功能介绍通常行为寻址机制和分段地址计算擦除循环次数的限制“立即”数据的处理管理块正确性信息缓存对齐API介绍类型定义函数定义Fee_InitFee_ReadFee_WriteFee_CancelFee_GetStatus<