工作总结:git篇

文章目录

  • 前言
  • 基础
  • Gerrit
    • 1.克隆
    • 2.新建本地分支和checkout
    • 3.添加到暂存区
      • 新增文件到暂存区
      • 修改已经添加到暂存区的文件
      • 取消添加到暂存区的文件
    • 4.提交到本地仓库
      • 在不重复提交的情况下,修改本次提交
    • 5.提交到远程仓库
    • 6.评审
    • 其他辅助命令


前言

目前也算是工作一段时间了。之前写的git基本操作一直放在草稿箱里面没发布。这次就打算跟着这一起给写出来做一个总结。


基础

git操作

Gerrit

我们公司用的是Gerrit,跟我们常用的github和gitee上的一些细节还是有点差别。这里详细说一下。

Gerrit的核心是企业级评审,而他评审的核心是changeId。所以,在使用Gerrit的时候,最重要的是保证changeId是不能变的,但是commit 那一串的Id会随着我们的提交发生变化,这个是可以的。下面我将按照git工作流程来对我工作上常用的git操作进行总结。
在这里插入图片描述
在这里插入图片描述

1.克隆

工作中的克隆的时候,依然跟我们平常一样,注意设置好ssh,以及设置user和email。在企业里面,如果你的企业比较大,需要注意的就是,你可能会没有代码仓库的权限,以及,没有代码仓库依赖的代码仓库的权限(人家的开发用的基础框架都是自研的),找leader申请吧。

2.新建本地分支和checkout

这个没有什么好说的,唯一需要注意的点在于,你们公司用的是什么git工作流。这影响你对代码的管理(你当然可以在本地的master分支开发,但如果你同时要做n个需求,你再像之前那样在master分支开发,代码的管理就会很困难)

3.添加到暂存区

我在没上班之前,我就喜欢直接git add .,很爽。搞了一次之后,我就老实了。如果你直接全部添加的话,我一般还会写一些不想添加到仓库的代码(比如测试代码,比如编译之后的文件,比如日志等等,这些按照要求是不能添加到代码仓库的)。如果你直接git add .你的领导在review的时候,就会跟你说这个不行。让你给删,再评审。就比较麻烦。

正确的做法是

新增文件到暂存区

git add 文件名

修改已经添加到暂存区的文件

git add -u 文件名

取消添加到暂存区的文件

git reset 文件名


上面基本就是我最常用的命令了。

4.提交到本地仓库

这里需要注意,我们公司每次开发一个功能或接口,都会创建一个开发卡片。没有绑卡片都提交不到仓库里面。
git commit -m “[卡片编号]本次代码的描述”

在不重复提交的情况下,修改本次提交

这个命令真的是我使用频率最高的命令了,当你的代码被打回来,需要修改代码,但是你的changeid还不能变,你还不能重复commit。那应该怎么办呢?
git commit --amend --no-edit
使用这个命令,当你把你新写好的代码给add 之后,你就能在不改变changeid的情况,把新添加的代码给放到当前的commit上。

如果你的代码改了,还想修改描述。
git commit --amend
它会出来你相关的提交,使用的vim编辑器。vim怎么操作就不多说了。

5.提交到远程仓库

还记得我上面说的,使用的是Gerrit嘛。他在这里的命令跟github和gitee有一点不一样。
他的流程是先评审在合并(其他的流程是先提PR,审查没问题后再合并,PR不会卡你的commit)
git push origin 需要提交的本地分支名:refs/for/远程分支名

这里需要注意的点
1.当你需要提交的时候,你才去从在远程的master分支拉出你需要提交的分支。
场景举例:
1.比如我现在开始写了统计相关的代码,我的本地分支叫Statistics。然后我还没写完我就在远程分支创建了Statistics。
2.经过1天的时间,你写完了代码,在这期间,其他人向master合并他的代码
3.你提交了你的代码,然后不合格,被领导打回来了,完全重写,你想reset,不小心把分支搞乱了,你把这个本地分支给删除了。然后你对master进行了更新,又拉了一个分支叫Statistics。

这个时候提交,你的提交会带着上一次别人更新的代码。原因是本地的master是最新的分支,但你远程的Statistics分支是基于上一个版本的master拉出来的,Gerrit可不管你是上一个还是最新的,它只看你两个分支的代码区别。

本人的亲身经历。

解决方法也很简单,把远程的Statistics给删了,再基于最新的master拉Statistics,你本地的分支是一点都不用变的,评审就OK了。

6.评审

Gerrit的评审可以在网页上写评论和和打分。打分分为-2,-1,0,+1,+2。通过就是+2。如果只想评论就是0。不想通过就是-2。评审完了就是可以合并了。趁着你还记得你写的代码,该合并就合并吧。因为你后面还要QA进行测试,QA还有其他的活,所以你合并完就快点QA联系。快的话,第二天就可以测了。如果当天测完之后,时间还早,上线时机合适,就可以上线了。(让你早点合并的原因就是,你现在还记得你的代码,要确保你没有把脏代码给合并上去,过几天,你自己都不记得你写的代码了,再让你上线你心里会发怵)

其他辅助命令

git status
git log -p
git log --oneline
git reset --soft commit-id

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

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

相关文章

ESP32 I2S音频总线学习笔记(二):I2S读取INMP441音频数据

简介 在这个系列的上一篇文章中,我们介绍了ESP32 I2S音频总线的相关知识,简要了解了什么是I2S总线、它的通信格式,以及相关的底层API函数。没有看过上篇文章的可以点击文章进行回顾: ESP32 I2S音频总线学习笔记(一&a…

(学习总结21)C++11 异常与智能指针

C11 异常与智能指针 异常异常的概念异常的抛出和捕获栈展开查找匹配的处理代码异常重新抛出异常安全问题异常规范标准库的异常 智能指针RAII 和智能指针的设计思路智能指针的使用场景分析C标准库智能指针的使用weak_ptr 和 shared_ptr循环引用weak_ptrshared_ptr 循环引用问题 …

智能调度体系与自动驾驶技术优化运输配送效率的研究——兼论开源AI智能名片2+1链动模式S2B2C商城小程序的应用潜力

摘要:随着全球化和数字化进程的加速,消费者需求日益呈现出碎片化和个性化的趋势,这对物流运输行业提出了前所未有的挑战。传统的物流调度体系与调度方式已难以满足当前复杂多变的物流需求,因此,物流企业必须积极引入大…

AndroidCompose Navigation导航精通1-基本页面导航与ViewPager

文章目录 前言基本页面导航库依赖导航核心部件简单NavHost实现ViewPagerPager切换逻辑图阐述Pager导航实战前言 在当今的移动应用开发中,导航是用户与应用交互的核心环节。随着 Android Compose 的兴起,它为开发者提供了一种全新的、声明式的方式来构建用户界面,同时也带来…

noteboolm 使用笔记

今天心血来潮,想要体验下AInotebook,看看最新的软件能够做到什么程度。 于是来到了notebooklm,这是一个google推出的AI笔记本的网站,我想知道我们能在上面做一些怎么样有趣的事情! 网址:https://notebookl…

JAVA 接口、抽象类的关系和用处 详细解析

接口 - Java教程 - 廖雪峰的官方网站 一个 抽象类 如果实现了一个接口,可以只选择实现接口中的 部分方法(所有的方法都要有,可以一部分已经写具体,另一部分继续保留抽象),原因在于: 抽象类本身…

ReactNative react-devtools 夜神模拟器连调

目录 一、安装react-devtools 二、在package.json中配置启动项 三、联动 一、安装react-devtools yarn add react-devtools5.3.1 -D 这里选择5.3.1版本,因为高版本可能与夜神模拟器无法联动,导致部分功能无法正常使用。 二、在package.json中配置启…

关于使用Mybatis-plus的TableNameHandler动态表名处理器实现分表业务的详细介绍

引言 随着互联网应用的快速发展,数据量呈爆炸式增长。传统的单表设计在面对海量数据时显得力不从心,容易出现性能瓶颈、查询效率低下等问题。为了提高数据库的扩展性和响应速度,分表(Sharding)成为了一种常见的解决方案…

【开源免费】基于Vue和SpringBoot的在线文档管理系统(附论文)

本文项目编号 T 038 ,文末自助获取源码 \color{red}{T038,文末自助获取源码} T038,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

智慧园区系统分类及其在提升企业管理效率中的创新应用探讨

内容概要 智慧园区的概念已经逐渐深入人心,成为现代城市发展中不可或缺的一部分。随着信息技术的飞速发展和数字化转型的不断推进,一系列智慧园区管理系统应运而生。这些系统不仅帮助企业提高了管理效率,还在多个方面激发了创新。 首先&…

图片上传实现图片预览的功能

文章目录 图片上传实现图片预览的功能一、引言二、拖拽上传实现预览1、HTML结构与样式2、JavaScript实现拖拽逻辑 三、选择文件上传实现预览1、HTML结构2、JavaScript实现预览逻辑 四、使用示例五、总结 图片上传实现图片预览的功能 一、引言 在现代网页设计中,图片…

电力晶体管(GTR)全控性器件

电力晶体管(Giant Transistor,GTR)是一种全控性器件,以下是关于它的详细介绍:(模电普通晶体管三极管进行对比学习) 基本概念 GTR是一种耐高电压、大电流的双极结型晶体管(BJT&am…

Linux - 进程间通信(2)

目录 2、进程池 1)理解进程池 2)进程池的实现 整体框架: a. 加载任务 b. 先描述,再组织 I. 先描述 II. 再组织 c. 创建信道和子进程 d. 通过channel控制子进程 e. 回收管道和子进程 问题1: 解答1&#xff…

【阅读笔记】New Edge Diected Interpolation,NEDI算法,待续

一、概述 由Li等提出的新的边缘指导插值(New Edge—Di-ected Interpolation,NEDI)算法是一种具有良好边缘保持效果的新算法,它利用低分辨率图像与高分辨率图像的局部协方差问的几何对偶性来对高分辨率图像进行自适应插值。 2001年Xin Li和M.T. Orchard…

Windows安装Miniconda和PySide6以及配置PyCharm

目录 1. 选择Miniconda 2. 下载Miniconda 3. 安装Miniconda 4. 在base环境下创建pyside6环境 5. 安装pyside6环境 6. 配置PyCharm环境 7. 运行第一个程序效果 1. 选择Miniconda 选择Miniconda而没有选择Anaconda,是因为它是一个更小的Anaconda发行版&#x…

Linux之内存管理前世今生(一)

一个程序(如王者荣耀)平常是存储在硬盘上的,运行时才把这个程序载入内存,CPU才能执行。 问题: 这个程序载入内存的哪个位置呢?载入内核所在的空间吗?系统直接挂了。 一、虚拟内存 1.1 内存分…

Java基于SSM框架的互助学习平台小程序【附源码、文档】

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

【Rust自学】16.3. 共享状态的并发

喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 16.3.1. 使用共享来实现并发 还记得Go语言有一句名言是这么说的:Do not commun…

Python 数据分析 - Matplotlib 绘图

Python 数据分析 - Matplotlib 绘图 简介绘图折线图单线多线子图 散点图直方图条形图纵置横置多条 饼图 简介 Matplotlib 是 Python 提供的一个绘图库,通过该库我们可以很容易的绘制出折线图、直方图、散点图、饼图等丰富的统计图,安装使用 pip install…

Java进阶(二):Java设计模式

目录 设计模式 一.建模语言 二.类之间的关系 1.依赖关系 2.关联关系 3.聚合关系 4.组合关系 5.继承关系 6.实现关系 三.面向对象设计原则 单一职责原则 开闭原则 里氏替换原则 依赖倒置 接口隔离原则 迪米特原则 组合/聚合(关联关系)复用原则 四.23种设计模式…