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

Git GitLab 使用及规范

Git 基本操作

Git安装配置及基本使用

  1. 从官网下载安装包,手动完成安装。
  2. 打开Git Bash命令行工具,执行命令ssh-keygen -t rsa -C Email-Addresss生成一个密钥对。
  3. 登录到GitLab,点击右上角你的用户头像,点击Edit Profile settings,点击SSH Keys,点击Add SSH Key,填写Title栏,复制用户目录下.ssh/id_rsa.pub文件的内容到Key,点击Add Key
  4. 点击已有的project,点击SSH后复制SSH边上栏里的地址。
  5. 打开Git Bash命令行工具,切换到一个合适的目录,使用命令git clone '刚才复制的URL'克隆创建的仓库。
  6. 进入目录cd 仓库名,执行命令
    git config --global user.email your-email,设置你的邮箱
    git config --global user.name your-name,设置你的姓名。
  7. 执行命令:
    echo "# Description" > README.md,添加一个文件
    git status,查看当前状态,发现有未跟踪文件
    git add .,当前目录所有文件添加到暂存区
    git diff,比较当前工作区和暂存区有何不同
    git status,查看当前状态,发现有文件未提交
    git commit -m "注释",把暂存区内容提交到本地仓库
    git push -u origin master,把本地仓库的提交推送到远程仓库
    git log,查看提交日志
  8. 模拟远程更新
    登录到GitLab,点击Files标签,点击README.md文件,点击Edit按钮修改文件内容,添加新行:"* 远程修改文件记录",可以点击Preview预览,也可以填写注释后直接保存。
  9. 执行命令:
    git pull,拉取远程仓库的更新提交,并做自动合并,可能会出现冲突
    git fetch,获得远程仓库的更新提交,不做自动合并,需要手动合并
    git merge origin/master,把远程更新提交手动合并到本地master分支
  10. 配置命令别名
    git config --global alias.co checkout,配置检出命令别名
    git config --global alias.br branch,配置分支命令别名
    git config --global alias.ci commit,配置提交命令别名
    git config --global alias.st status,配置当前状态命令别名
    git config --global alias.df diff,配置比较命令别名
    git config --global alias.pl pull,配置拉取命令别名
    git config --global alias.pu push,配置推送命令别名
    git config --global alias.mr merge 配置合并命令别名
    git config --list,查看配置列表
    git config --global credential.helper store,配置记住密码,以HTTPS使用时
  11. 其它命令
    git clean -f,清空未跟踪文件
    git checkout .,清空工作区改动
    git checkout some-branch-name file-name.js,检出指定分支的指定文件
    git checkout {{some-commit-hash}} file-name.js,检出指定提交的指定文件
  12. 其它

Git管理大项目一段时间后会比较慢,可以使用git gc命令清理一下Git不管理空目录,如果本地有空目录,则始终不会提交到仓库中Git会根据文件的相似性自动识别重命令名操作,底层其实也是先delete后add可在.git同级目录添加.gitignore文件,文件中可写入忽略文件信息,查看状态和提交时均会自动忽略1.7版好像支持了像svn那样只检出部分目录的功能,详细请移步官网文档


Git本地分支管理

  1. 分支的创建、合并、删除、比较
    git branch,显示所有分支
    git branch b1,从当前分支创建一个叫b1的分支
    git checkout b1,切换到b1分支
    git checkout -b b1,相当于以上两条命令的组合
    git checkout master,切换到master主分支
    git merge b1,把b1分支的代码合并到master上
    git branch -d b1,删除b1分支,不能在被删除分支上执行
    git diff branch-1 branch-2,比较两个分支的不同
    git diff --name-only branch-1 branch-2,只显示两分支不同的文件的名称
    git diff some-branch some-filename.js,比较当前分支与另一分支指定文件


Git远程分支管理

  1. 远程分支的创建、合并、删除
    git push origin dev,将本地分支dev推送到origin远程仓库
    git pull origin dev,拉取远程仓库origin的dev分支并自动合并
    git push orgin :dev,删除远程仓库origin上的远程分支
    git push origin --delete dev,7版之后可以使用这个命令。
    git remote prune origin,清理本地的跟踪分支,可加--dry-run参数假执行一下
    git pull --rebase,以变基的形式拉取更新

Tips : tag的远程管理类似远程分支管理


Git Tag标签管理

  1. 标签的创建、删除
    git tag t1,从当前分支创建一个名为t1的标签
    git tag -m '注释' t1,创建一个带有注释的标签
    git tag -d t1,删除名为t1的标签

Git Log日志

git log,查看历史日志
git log --graph,以基于文本的图形显示合并轨迹
git log --pretty=oneline,一行显示日志简要信息
git log --pretty=format:"%h - %an, %ar : %s",以指定格式查看日志,format参数请移步官方手册
git log --pretty="%h - %s" --author=gitster --since="2008-10-01" --before="2008-11-01" --no-merges,以指定格式显示指定日期区间和指定提交者的日志,不含合并提交
git log -p -2 --stat,-p显示文件差异,-2显示最近两次提交,--stat显示修改行数统计信息
git log -p filename,查看文件的详细变更,包括文件的实际修改内容
git log -L 1,1:some-file.txt,查看文件中指定位置的变更
git log --no-merges master..,查看尚未合并到master分支的变更

其它高级命令

git show --no-merges master..,功能同上
git show some-branch:some-file.js,查看其它分支的文件,无需切换分支


GitLib权限管理

GitLib有五种身份权限,分别是:

Owner 项目所有者,拥有所有的操作权限

Master 项目的管理者,除更改、删除项目元信息外其它操作均可

Developer 项目的开发人员,做一些开发工作,对受保护内容无权限

Reporter 项目的报告者,只有项目的读权限,可以创建代码片断

Guest 项目的游客,只能提交问题和评论内容

具体参见GitLab权限,为项目添加成员时可指定成员的身份权限。


命名规则

  • 每次提交必须写明注释,如果是修复Bug,请加上Bug号创建特性分支,名称要以f-开头,加上特性
  • 创建发布分支,名称要以r-开头,加上预发布版本号
  • 创建Bug修复分支,名称要以b-开头,加上Bug号创建标签,名称要以t-开头,加上发布版本号
  • 合并分支时必须使用--no-ff参数(禁止以快进方式合并),以保留合并历史轨迹

分支模型

整体流程图:


主要分支(保护分支)

  • master 主分支,稳定代码,为生产环境做准备的
  • develop 开发分支,为开发服务分支关系类似下图:


辅助分支


特性分支

从develop分支创建,用于特性开发,完成后要合并回develop分支。

操作过程:

git checkout -b newfeature develop,从develop分支创建newfeature特性分支

git checkout develop,开发完成后,需要合并回develop分支,先切换到develop分支

git merge --no-ff newfeature,合并回develop分支,必须加--no-ff参数

git branch -d newfeature,删除特性分支

git push origin develop,把合并后的develop分支推送到远程仓库分支关系类似下图:

发布分支

从develop分支创建,用于预发布版本,允许小bug修复,完成后要合并回develop和master。
操作过程:
git checkout -b release-1.2 develop,创建一个发布分支
git checkout master,切换到master分支,准备合并
git merge --no-ff release-1.2,把release-1.2分支合并到master分支
git tag 1.2,从master分支打一个标签
git checkout develop,切换到develop分支,准备合并
git merge --no-ff release-1.2,把release-1.2分支合并到develop分支
git branch -d release-1.2,删除这个发布分支

修复分支

从master分支创建,用于生产环境上的Bug修复,完成后要合并回develop和master。

操作过程:

git checkout -b hotfix-1.2.1 master,从master分支创建一个Bug修复分支

git checkout master,切换到master分支,准备合并

git merge --no-ff hotfix-1.2.1,合并到master分支git tag 1.2.1,为master分支创建一个标签

git checkout develop,切换到develop分支,准备合并

git merge --no-ff hotfix-1.2.1,合并到develop分支

git branch -d hotfix-1.2.1,删除hotfix-1.2.1分支

相关文章:

Git GitLab 使用及规范

Git 基本操作 Git安装配置及基本使用 从官网下载安装包,手动完成安装。打开Git Bash命令行工具,执行命令ssh-keygen -t rsa -C Email-Addresss生成一个密钥对。登录到GitLab,点击右上角你的用户头像,点击Edit Profile settings&…...

【SpringCloud——Sentinel】

一、什么是雪崩? 微服务调用链路中的某个服务发生故障,引起整个链路中的所有微服务都不可用,这就是雪崩。 二、解决雪崩问题的常见措施 1、超时处理 设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休…...

面试专题:计算机网络常见面试点总结

socket、tcp、udp、http 的认识及区别 socket、tcp、udp、http 的认识及区别​ 一、先来一个讲TCP、UDP和HTTP关系的 1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传…...

PageHelper失效问题

问题出现记录: 修改代码后,出现分页失效问题,原本的代码再设置了 PageHelper.startPage(pageNum, pageSize);后只有一个mysql查询,我在原本的业务查询前,新增了其他的Mysql查询,导致原需要分页的查询失效 …...

Linux常用命令——grep命令

在线Linux命令查询工具 grep 强大的文本搜索工具 补充说明 grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本&…...

学校热水供应系统方案

学校热水供应系统是现代化校园建设的重要组成部分。一套高效、可靠、安全、环保的热水供应系统,不仅能够满足学生、教职工的日常生活需求,也能提高学校形象和竞争力。 在设计学校热水供应系统方案时,需要考虑以下几个方面: 一、热…...

chatgpt赋能python:Python怎么写绝对值

Python怎么写绝对值 在Python编程语言中,有很多常用函数。其中包括求绝对值的函数。在这篇文章中,我们将介绍如何在Python中使用绝对值函数,并提供一些示例。 什么是绝对值函数? 绝对值函数是一个数学中常用的函数,…...

研发工程师玩转Kubernetes——Node亲和性requiredDuringSchedulingIgnoredDuringExecution几种边界实验

在《研发工程师玩转Kubernetes——使用Node特性定向调度Pod》中,我们提到requiredDuringSchedulingIgnoredDuringExecution只有在规则被满足的时候才能执行调度。本节我们将测试几种边界情况,看看Kubernetes的行为。 没有满足的条件 假设我们测试的Nod…...

OpenCV中的图像处理3.9(六)轮廓线特征与属性

目录 3.9 OpenCV中的轮廓线3.9.1 轮廓线:入门目标什么是轮廓线?如何绘制轮廓线?轮廓线逼近法 3.9.2 轮廓线的特征1. 矩2. 轮廓线面积3. 轮廓线周长4. 轮廓逼近5. 凸面体6. 检查凸性7. 边界矩形8. 最小包围圈9. 拟合椭圆10. 拟合直线 3.9.3 轮…...

burpsuite+xray实现联动测试(手动分析和自动化测试同时进行)

目的:安全测试过程中手动分析测试与xray自动化扫描测试结合,这样可以从多层保障安全测试的分析,针对平台业务接口量大的安全测试是十分有用的,可以实现双向测试同时开始。 xray简介 xray 是一款功能强大的安全评估工具&#xff…...

2023年专业连锁行业研究报告

第一章 行业概况 专业连锁行业是指以连锁经营模式运营的公司,其主要业务涵盖零售、餐饮、酒店、医疗、教育等领域。这些公司通过规模化、标准化的经营模式和供应链管理,提供专业化、高质量的产品和服务。专业连锁行业在全球范围内蓬勃发展,并…...

Mysql数据库(六):基本的SELECT语句

基本的SELECT语句 前言一、SELECT...二、SELECT ... FROM三、列的别名四、去除重复行五、空值参与运算六、着重号七、查询常数八、显示表结构九、过滤数据 前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主&#…...

在CentOS7环境中,实现使用openresty配置文件,达到jwt指定用户userid不能访问的效果

#在CentOS7环境中,实现使用openresty配置文件,达到jwt指定用户userid不能访问的效果。 首先,你需要安装 OpenResty 和 JWT 组件: 安装 OpenResty 参考 OpenResty 的官方安装文档,在终端执行如下命令: $…...

SpringBoot 源码分析初始化应用上下文(1)-createApplicationContext

前言:springBoot的版本是 2.2.4.RELEASE 一、入口 /*** Run the Spring application, creating and refreshing a new* {link ApplicationContext}.* param args the application arguments (usually passed from a Java main method)* return a running {link A…...

STM32队列

目录 什么是队列? 队列特点 1. 数据入队出队方式 2. 数据传递方式 3. 多任务访问 4. 出队、入队阻塞 队列相关 API 函数 1. 创建队列 参数: 2. 写队列 参数: 返回值: 3. 读队列 参数: 返回值&#xf…...

探索Beyond Compare:让文件比较和管理变得简单高效

在这个信息爆炸时代,我们的日常生活和工作中需要处理大量的数据和文档。在这个过程中,有时候我们会面临找出不同文件之间的差异、合并重复内容等需求。那么,有没有一款软件可以帮助我们轻松地完成这些任务呢?答案当然是肯定的&…...

动态网站Servelt基础

文章目录 一、Servlet基础(一)Servlet概述1、Servlet是什么2、Servlet容器3、Servlet应用程序的体系结构 (二)Servlet的特点1、功能强大2、可移植3、性能高效4、安全性高5、可扩展 (三)Servlet接口1、Servl…...

Docker 网络

Docker 网络实现原理 Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机…...

Tomcat的优化

Tomcat的优化 一、Tomcat 优化Tomcat 配置文件参数优化 二、系统内核优化三、Tomcat 配置 JVM 参数:参数含义 一、Tomcat 优化 Tomcat默认安装下的缺省配置并不适合生产环境,它可能会频繁出现假死现象需要重启,只有通过不断压测优化才能让它…...

一个问题来对比文心一言和chatgpt

问题: 请注意, 孩子不会说话,他无法用语言来回复妈妈的问题, 请生成以下剧本:一个妈妈和一岁不会说话的婴儿的日常vlog的剧本 文心一言 场景一:早晨 (妈妈和孩子在客厅里醒来) 妈妈&…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

在rocky linux 9.5上在线安装 docker

前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂&#xff…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...