Gerrit

一、准备工作

1、 Gerrit设置

登录gerrit,公司的Git库管理工具。

点击页面右上角的 Settings (点击右上角的名字 -> Settings)

点击左侧的 HTTP Credentials

点击界面上的 Generate new password 生成新的密码(该密码需要保存到本地,下面clone代码时需要使用到)

2、 配置准备

下载Git配置文件:.gitconfig(点我下载),保存到用户目录。注意文件名是以点开头,文件最终路径是:Windows:C:\Users\你的用户名\.gitconfig

Linux, Mac:/home/你的用户名/.gitconfig

编辑这个.gitconfig文件,把名字和邮箱改成你自己的

这是全局设置,如果想每个项目设置不一样内容,可以把不一样的配置项复制到项目的配置文件中项目的配置文件是:项目目录/.git/config

如果全局和项目有相同的配置项,项目的会覆盖全局的

t首次提交代码,更新email以及name,举例:张三(名.姓)

git config --global user.email "san.zhang@allintechinc.com"

git config --global user.name " san.zhang "

二、第一次获取代码

1、 Clone代码

登录gerrit网站

点击菜单上 Projects -> List 进入项目列表 (Old UI),如果是 New UI,点击菜单上的 Browse -> Repositories

点击项目列表中需要Clone的项目的名字,进入项目仓库的详情页面

点击 Clone with commit-msg hook 和 http

复制下面的命令

在电脑上打开终端(Windows需要打开Git Bash:注意不要用Git CMD)

使用cd 命令跳转到要clone代码的目录

将上面拷贝的命令粘贴到终端,按下回车键执行

clone下来的项目默认是master分支,文件夹中没有业务代码,需要切到develop分支才有业务代码

如果需要输入密码,不是LDAP的密码,是一、准备工作中的第一步中Gerrit生成的密码,很长的一个字符串密码如果密码输入错误或者想要重置密码,需要进行重置凭据操作

2、检出工作分支

cd 项目目录

git co develop

三、一个任务的完整开发周期和流程

ee每次提交都要执行全部的步骤

1、 代码更新,清理上个已完成任务分支

git co develop

git pull

git br -d TAIH-xxxx

其中TAIH-xxxx,是上个已完成任务的分支名字,否则之前已完成任务的分支会很多。

如果是项目的第一个任务,可以忽略。

2、 新建当前任务分支

git co -b TAIH-xxxx

其中TAIH-xxxx,是Jira上的任务号,如JMD-123

开始工作

3、 工作完成,提交代码

先提交当前修改,并填写提交信息

git add .  

git ci

提交消息的基础模板为:

TAIH-xxxx: 修改内容的简要说明

1. 修改项1  

2. 修改项2  

3. 修改项3  

4. 修改项4

注意: 提交消息中的change-id不要删除或修改,保留change-id在提交消息的最后一行即可

4、 同步代码

在开发当前任务的这段时间,可能已经有同事对同一个代码库做了提交,所以需要先同步一下develop分支

git co develop  

git pull   

5、 Rebase代码

把刚才的任务分支的修改,在develop的最新版本上rebase一下

git co TAIH-xxxx

git rebase develop

如果有失败信息,说明已经有同事,跟你改了同一个文件的同一行代码,所以无法自动合并文件,需要打开文件手动解决冲突部分。

6、 推送代码

git review

如果提交的时候总是提示需要输入密码 在命令行上执行这样 git config --global credential.helper store 一行命令

7、 添加reviewer

登录gerrit

一般情况下登录后可以看到刚刚的提交,如果不在提交列表下,可以点击菜单上的 My -> Changes,点击刚刚的提交

进入提交的详情页面,点击 Reviewers后的小人图标,添加reviewer。

注意: 在看到jenkins打分为 +1 后再添加reviewer,如果 Jenkins 的校验未通过,在本地修改后 Jenkins 检测出的问题后重新提交

8、 代码Review未通过的情况下

本地继续修改Review中发现的问题

提交修改

git add .git ci --amendgit co develop  git pull git co TAIH-xxxx  git rebase developgit review

注意:这里如果只是修改一些typo,添加注释等,可以不修改提交消息

9、 Review之后

如果代码通过了Review,任务已经结束,代码已经合并到develop分支。从步骤1重新开始

如果任务未结束,继续编码解决问题

10、备注

开发人员只能在Task和Bug下进行任务提交

一个任务可以多次提交,如果完成一个任务编写的代码行数较多,大家需要多次提交,并且保证每次提交不会导致程序无法允许

一个提交被merge之后,在修改代码时,应该重新提交。 一个commit  对应一个Code Review。 

11、Git提交常见问题及解决方式

重要:先看Git使用文档  Git使用说明 

11.1 正常提交review后,发现有问题需要修改怎么办?

要看提交的内容是否已经Merge

已经Merge:重新修改,重新提交即可。

还未Merge:修改,然后 在commit 时增加参数 --amend 。

11.2 提交review后,发现多提交了文件,如何处理?

直接删除这个文件,然后重新提交review即可。具体提交方式见上面的11.1

11.3 提交Review后,在Gerrit上面提示有冲突,或者提示有 Relation Chain,如何处理?

处理方法:点击或上角的 Abanbon 按钮,重新提交。

出现冲突的原因:多次提交修改了同一个文件,Git在Merge时发生冲突。

出现Relation Chain的原因:一次提交的代码分支是基于另一次提交的代码分支而建。每次修改的分支都应该从develop分支建立。

11.4 正常提交Review后想修改,但是develop分支有新的版本,如何操作?

 方法一:

stage本次修改的内容: git add .

stash本次修改的内容;git stash save {修改内容描述}

切换回 develop分支;git checkout develop

拉取最新的内容;git pull

切换回本次修改分支;git checkout {本次分支}

rebase分支:git rebase develop

使用 git stash list 查看之前 stash的内容;

使用 git stash apply {stash的编号} ,重新应用修改;

重新提交;注:增加--amend参数

提交Review:git review

方法二:

不Stash,用rebase来合并

git commit --amend

git co develop

git pull

git co {自己的分支}

git rebase develop

如果冲突解决冲突

解决完后 git commit --amend

方法三:

不使用新分支,直接在develop上面开发

git pull (使用idea来pull,因为有冲突时直接使用命令行pull不下来)

手动合并

git commit --amend

git review

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在现在的工作开发中,一般都会使用版本控制来协同开发,在此我讲述Git的的日常使用。(本教程只针对工作不久的小白或者...
    LouisHUI阅读 11,027评论 0 5
  • 第1章 Gerrit 简介 Gerrit 是一个基于 web 的代码评审工具, 它基于 git 版本控制系统。旨在...
    平常心的胖77阅读 66,917评论 3 13
  • Gerrit介绍 Gerrit简介 Gerrit, 一种开放源代码的代码审查软件, 使用网页界面. 利用网页浏览器...
    木叶简阅读 14,099评论 0 53
  • 1, Gerrit是什么? Gerrit实际上一个Git服务器,它为在其服务器上托管的Git仓库提供一系列权限控制...
    anly_jun阅读 123,269评论 6 126
  • 涉及到的基本操作 登录 gerrit 激活邮箱 获取 http Credentials 拉取代码 提交代码 Rev...
    tufatao阅读 14,424评论 0 2

友情链接更多精彩内容