工作总结: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.mzph.cn/web/67373.shtml

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

相关文章

< OS 有关> BaiduPCS-Go 程序的 菜单脚本 Script: BaiduPCS-Go.Menu.sh (bdgo.sh)

目标: 使用 日本阿里云的 VPM 传输文件。 暂时方案: 使用 主机JPN 下载 https://huggingface.co/ 上模型从 JPN 放到 度狗上在家里从狗度下载 为了减少编程,尽量使用现在软件 ,就找到 GitHub - qjfoidnh/BaiduPCS-Go: iikira…

(详细)Springboot 整合动态多数据源 这里有mysql(分为master 和 slave) 和oracle,根据不同路径适配不同数据源

文章目录 Springboot 整合多动态数据源 这里有mysql(分为master 和 slave) 和oracle1. 引入相关的依赖2. 创建相关配置文件3. 在相关目录下进行编码,不同路径会使用不同数据源 Springboot 整合多动态数据源 这里有mysql(分为maste…

DeepSeek--通向通用人工智能的深度探索者

一、词源与全称 “DeepSeek"由"Deep”(深度)与"Seek"(探索)组合而成,中文译名为"深度求索"。其全称为"深度求索人工智能基础技术研究有限公司",英文对应"De…

matlab中,fill命令用法

在 MATLAB 中,fill 命令用于创建填充多边形的图形对象。使用 fill 可以在二维坐标系中绘制填充的区域,通常用于绘制图形的背景或显示数据分布。 基本语法 fill(X, Y, C)X 和 Y 是同样长度的向量,定义了多边形的顶点坐标。C 是颜色&#xff0…

汽车定速巡航

配备定速巡航功能的车型,一般在方向盘附近设有4~6个按键(可能共用键位)。 要设置定速巡航,不仅需要方向盘上的按键,还要油门配合。 设置的一般流程: 开关:类似步枪上的“保险”,按…

C++11中array容器的常见用法

文章目录 一、概述二、std::array的特点三、std::array的定义与初始化三、std::array的常用成员函数四、与 C 风格数组的互操作 一、概述 在 C11 中,std::array 是一个新的容器类型,它提供了一个固定大小的数组封装。相比传统的 C 风格数组,…

Vue 响应式渲染 - 待办事项简单实现

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue 响应式渲染 - 待办事项简单实现 目录 待办事项简单实现 页面初始化 双向绑定的指令 增加留言列表设置 增加删除按钮 最后优化 总结 待办事项简单实现 页面初始化 对页面进行vue的引入、创建输入框和按钮及实例化V…

中文输入法方案

使用了三年的自然码双拼,毫无疑问是推荐使用双拼输入法。 三年积累下来的习惯是: 1 自然码方案 2 空格出字 字母选字 直到如今,想要做出改变,是因为这样的方案带来的痛点: 1 使用空格出字就无法使用辅助码&#…

在Windows系统中本地部署属于自己的大语言模型(Ollama + open-webui + deepseek-r1)

文章目录 1 在Windows系统中安装Ollama,并成功启动;2 非docker方式安装open-webui3下载并部署模型deepseek-r1 Ollama Ollama 是一个命令行工具,用于管理和运行机器学习模型。它简化了模型的下载与部署,支持跨平台使用&#xff0c…

ProGen生成功能蛋白序列

LLM在包括蛋白质设计等各种生物技术应用中展现出了潜力。ProGen是一种语言模型,它能够生成在大型蛋白质家族中具有可预测功能的蛋白质序列,这类似于针对不同主题生成语法和语义正确的自然语言句子。该模型在来自超过19,000个家族的2.8亿个蛋白质序列上进…

省级数字经济发展水平数据(2011-2022年)-社科数据

省级数字经济发展水平数据(2011-2022年)-社科数据https://download.csdn.net/download/paofuluolijiang/90028602 https://download.csdn.net/download/paofuluolijiang/90028602 数字经济是指以数据资源为关键要素、以现代信息网络为主要载体、以信息…

Leecode刷题C语言之跳跃游戏②

执行结果:通过 执行用时和内存消耗如下&#xff1a; int jump(int* nums, int numsSize) {int position numsSize - 1;int steps 0;while (position > 0) {for (int i 0; i < position; i) {if (i nums[i] > position) {position i;steps;break;}}}return steps…

《多线程基础之条件变量》

【条件变量导读】条件变量是多线程中比较灵活而且容易出错的线程同步手段&#xff0c;比如&#xff1a;虚假唤醒、为啥条件变量要和互斥锁结合使用&#xff1f;windows和linux双平台下&#xff0c;初始化、等待条件变量的api一样吗&#xff1f; 本文将分别为您介绍条件变量在w…

消息队列篇--通信协议篇--TCP和UDP(3次握手和4次挥手,与Socket和webSocket的概念区别等)

1、TCP和UDP概述 TCP&#xff08;传输控制协议&#xff0c;Transmission Control Protocol&#xff09;和UDP&#xff08;用户数据报协议&#xff0c;User Datagram Protocol&#xff09;都算是最底层的通信协议&#xff0c;它们位于OSI模型的传输层。*传输层的主要职责是确保…

打破传统束缚:领略 Web3 独特魅力

在互联网发展的历程中&#xff0c;我们见证了Web1和Web2的变迁。Web1是静态信息的展示平台&#xff0c;Web2则引领了社交互动和内容创作的繁荣&#xff0c;而如今&#xff0c;Web3作为新时代的互联网架构&#xff0c;正逐渐展现出其独特的魅力&#xff0c;带领我们走向一个更加…

[论文总结] 深度学习在农业领域应用论文笔记14

当下&#xff0c;深度学习在农业领域的研究热度持续攀升&#xff0c;相关论文发表量呈现出迅猛增长的态势。但繁荣背后&#xff0c;质量却不尽人意。相当一部分论文内容空洞无物&#xff0c;缺乏能够落地转化的实际价值&#xff0c;“凑数” 的痕迹十分明显。在农业信息化领域的…

Linux 学习笔记__Day3

十八、设置虚拟机的静态IP 1、VMware的三种网络模式 安装VMware Workstation Pro之后&#xff0c;会在Windows系统中虚拟出两个虚拟网卡&#xff0c;如下&#xff1a; VMware提供了三种网络模式&#xff0c;分别是&#xff1a;桥接模式&#xff08;Bridged&#xff09;、NAT…

QT+mysql+python 效果:

# This Python file uses the following encoding: utf-8 import sysfrom PySide6.QtWidgets import QApplication, QWidget,QMessageBox from PySide6.QtGui import QStandardItemModel, QStandardItem # 导入需要的类# Important: # 你需要通过以下指令把 form.ui转为ui…

笔记本跑大模型尝试

1&#xff0c;笔记本电脑资源 我是一台联想笔记本电脑&#xff0c;基本配置如下&#xff1a; CPU&#xff1a;12th Gen Intel(R) Core(TM) i7-1255U 1.70 GHz (12核心&#xff0c;2个P核和8个E核&#xff0c;共计10个核心) 显卡&#xff1a;NVIDIA GeForce MX550 内存&am…

C语言实现扫雷游戏(有展开一片和标记雷的功能)

实现准备 分2个.c源文件和1个.h头文件去写代码 test.c 对扫雷游戏进行测试game.c 扫雷游戏功能的实现game.h 扫雷游戏功能的声明 扫雷游戏 1.test.c对扫雷游戏进行测试 首先我们要先把玩游戏的框架写出来&#xff0c;然后一步一步去完成其功能 跟着下面的代码的节奏走一步一步…