工作总结:git篇

文章目录


前言

目前也算是工作一段时间了。之前写的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

相关推荐
苏-言4 小时前
Git进阶之旅:Git 配置信息 Config
git
画船听雨眠aa21 小时前
git仓库
git
悬铃木下的青春1 天前
【Git】使用笔记总结
笔记·git
九月十九1 天前
Git 的基本概念和使用方式
git
画船听雨眠aa2 天前
git相关命令
git
嵌入式小能手3 天前
移植前准备之git管理内核源码
git
Yungoal3 天前
Unity git版本管理
git
小锋学长生活大爆炸3 天前
【知识】可视化理解git中的cherry-pick、merge、rebase
git
牛马程序员‍3 天前
Day99 Gitub、系统分层架构
git·架构·mvc·ddd架构·gitub