工作总结: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

相关推荐
ashane131421 分钟前
Redis的一些高级指令
redis·git·bootstrap
互联网搬砖老肖11 小时前
Git Fetch 和 Git Pull 的区别
git
涛ing11 小时前
【Git “fetch“ 命令详解】
linux·c语言·c++·人工智能·git·vscode·svn
ACGkaka_14 小时前
Git(八)如何在同一台电脑登录两个Git
git
漫天转悠17 小时前
本地Git仓库SSH同步到Gitee(码云)仓库的完整指南(附:SourceTree同步仓库)
git·gitee·ssh
一枚前端小姐姐18 小时前
git merge - 本地解决无权限dev分支的合并冲突
前端·git
froxy21 小时前
Forking Workflow 详解
git
蜉蝣之翼❉21 小时前
git 对比两种优化方法的性能
git
Archie_IT1 天前
5分钟搞定pichome本地部署方案并配置远程在线多端同步访问权限
网络·git·http·docker
幸福摩天轮1 天前
git原理浅析
git