Git GitLab 使用及规范

news2024/11/25 13:19:25

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分支

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

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

相关文章

【Linux】linux和Linus

1991.09.17 21岁的芬兰学生林纳斯.托瓦兹在网上发布开源操作系统Linux0.01。 林纳斯本纳第克特托瓦兹(Linus Benedict Torvalds,1969年12月28日- ),芬兰赫尔辛基人,著名的电脑程序员,Linux内核的发明人及 …

Revit如何在体量中进行放样及如何生成垫层

一、Revit如何在体量中进行放样 体量中的放样在常规族放样的基础上进行了简化,下面通过实例来说明如何在体量中进行放样。 (1)新建概念体量。点击“新建概念体量”→“公制体量”→“打开”。 (2)绘制放样路径。点击“…

盖雅「劳动力账户」助力物业行业实现精细化工时成本管理

物业行业的用工形式和工时制度多样,需要大量的劳动力提供安保、清洁、维修及其他服务,所以人工成本成为了物业公司最大的经营成本之一。而这些员工近半数都是外包人员。因此,物业公司需要利用数字化工具实时记录员工的出勤和工时,…

Grid++Report多个子报表实现

子报表实现参考 GridReport子报表实现 基于上述单个子报表的实现,我们可以衍生多个子报表实现 子报表与主报表可以是关联关系,也可以是独立存在。 配置主从关系字段即代表有关联关系 只有明细网格节点内配置的子报表才可以设置主从关系字段 报表头、…

强光LED手电筒方案开发设计

在户外活动中,不管是徒步还是露营,经常需要使用多功能强光手电筒。宇凡微推出的多功能战术强光LED手电筒方案,具有十多年LED灯项目研发经验,方案成熟,支持定制开发。 一、战术强光LED手电筒方案功能介绍 户外使用的LED…

安装Logstash并导入Movielens测试数据集(基于elasticsearch-8.5.2版本)

安装Logstash并导入Movielens测试数据集 0 安装前准备工作 0.1 安装包下载 组件安装包下载地址Logstashlogstash-8.5.2-linux-x86_64.tar.gzelastic官网:https://www.elastic.co/cn/downloads/past-releases#logstash elastic中文社区:https://elasti…

第六届中国软件开源创新大赛-openGauss赛道全面开启

第六届“中国软件开源创新大赛”在国家自然科学基金委信息科学部的指导下,由中国计算机学会(CCF)主办,西北工业大学、绿色计算产业联盟、CCF 开源发展委员会联合承办。旨在为国内开源社区提供展示、交流、合作的平台,激…

实力出圈!联诚发LED屏与xr虚拟拍摄解决方案亮相文博会!

六月初夏的深圳,正迎来一场文化产业界的盛事。6月7日,为期5天的第十九届中国(深圳)国际文化产业博览交易会(下称“文博会”)正式拉开帷幕。联诚发LCF作为国家级高新技术企业、国家级专精特新小巨人企业,以及优秀的LED显示与数字装备企业代表亮…

03.Web大前端时代之:HTML5+CSS3入门系列~H5功能元素

2.功能元素 1.hgroup 对网页或区段&#xff08;section&#xff09;的标题进行组合 2.figure <figure> 标签规定独立的流内容&#xff08;图像、图表、照片、代码等等&#xff09;。 figure 元素的内容应该与主内容相关&#xff0c;但如果被删除&#xff0c;则不应对…

如何申请项目管理专业人员能力等级评价(CSPM)?

2021年10月&#xff0c;中共中央、国务院发布的《国家标准化发展纲要》明确提出构建多层次从业人员培养培训体系&#xff0c;开展专业人才培养培训和国家质量基础设施综合教育。建立健全人才的职业能力评价和激励机制。由中国标准化协会&#xff08;CAS&#xff09;组织开展的项…

“智慧水利”发展综述:我国水利事业迈入新阶段

6月7日-9日&#xff0c;“2023中国水博览会暨中国&#xff08;国际&#xff09;水务高峰论坛”上&#xff0c;“智慧水利”再次成为热议话题。 智慧水利是在以智慧城市为代表的智慧型社会建设中产生的相关先进理念和高新技术在水利行业的创新应用&#xff0c;是云计算、大数据、…

泰山信息科技5周年:无尽的感恩,非常非常的惋惜

去年的时候&#xff0c;庆贺4周年&#xff0c;公司员工一起去某个地方玩&#xff08;确实没吃到什么东西&#xff09;。这是当时的情形&#xff1a; 因为各种原因&#xff0c;今年3月无锡研发基地解散。作为技术总监&#xff0c;我是非常非常的惋惜。因为我真的想把泰山OFFICE做…

T2-U开发板实现红外遥控接收与发送

文章目录 一、红外概况二、发射1. 调制2. 红外传输协议3. 编码 三、接收四、T2-U开发板硬件连接五、TuyaOS红外功能介绍红外接收功能 六、红外功能代码使用流程1. 硬件注册2. 设备查找3. 打开设备4. 红外发送5. 红外接收6. 接收回调注册 红外遥控是利用近红外光进行数据传输的一…

如何做好功能测试,看这几点就够了

关于新人如何做好功能测试&#xff0c;以下是我个人的一些思考。 01、测试基础的重要性 作为一名测试新人&#xff0c;测试基础非常非常重要。这里说的基础&#xff0c;不仅仅是什么是软件测试、软件测试的目的&#xff0c;而是测试用例的设计能力。 因工作的原因&#xff0…

进程信号以及用户态和内核态的理解

文章目录 什么是进程信号&#xff1f;用户层产生信号的方式有哪些&#xff1f;信号在内核的存在形式认识信号的一些接口信号处理的执行流程理解用户态和内核态信号处理流程 什么是进程信号&#xff1f; 进程信号是一种事件异步通知机制&#xff0c;属于软件中断&#xff08;因…

手机充电流程

手机的整个充电过程由充电管理IC 控制的&#xff0c;完整的充电过程可以分为6个阶段&#xff1a;涓流充电模式、预充电模式、恒流充电模式、恒压充电模式、充电完成模式、二次充电模式。 完整的充电过程 1. 涓流充电模式 涓流充电一般以很小的电流&#xff08;几十到一百毫安…

LeetCode - 15 三数之和

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 15. 三数之和 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满…

【Android】WMS(四)WMS职责

WMS职责 WMS&#xff08;Window Manager Service&#xff09;是 Android 系统中的一个系统服务&#xff0c;它是WindowManager的管理者&#xff0c;负责对窗口进行管理、分配资源&#xff0c;以及处理用户的输入事件等问题。WMS是整个系统中非常重要的一个组成部分&#xff0c;…

昨晚技术交流群“炸了”,论搞技术的网络工程师究竟能有多严谨?

昨日在IELAB网络实验室学习交流群中发生了一场“激烈”的争论&#xff0c;原本是同往常一样的答题领红包活动&#xff0c;同学对答案产生了异议&#xff0c;从而和Summer赵老师在群里进行了沟通交流&#xff0c;具体是什么情况呢&#xff1f; IELAB每日答题活动 于是乎&#xf…

JMeter 测试笔记(一):认识JMeter

引言&#xff1a; 在现代互联网时代&#xff0c;应用程序的性能已经成为了一个非常重要的问题&#xff0c;并且对于许多公司的生存和发展都起着至关重要的作用。 而JMeter作为一个免费且开源的性能测试工具&#xff0c;可以帮助我们进行各种类型的性能测试&#xff0c;如接口…