gerrit使用记录

要像自动拉去钩子文件并能够自动放入.git/hook/目录下, 请使用ssh协议. http协议经测试不能成功.

  1. 进入仓库地址: http://60.205.93.190/gerrit/admin/projects
image.png
  1. 然后会看到两个网址: 1)克隆并自动获取commit-msg钩子文件. 2)仅克隆远程仓库.
    image.png

经使用发现, 用第一个地址克隆, 报错:


image.png

于是将地址中的钩子地址:http://[email protected]/gerrit/tools/hooks/commit-msg复制出来, 粘贴浏览器地址栏, 回车, 手动下载到桌面.
然后复制到:path/to/仓库/.git/hooks/下.

  1. 新建测试文件:


    image.png
  2. add & commit

git add .
 git commit -m "first"

commit-msg钩子其实就是在commit命令执行时调用的脚本, 相当于模板.
投了commit-msg的仓库, commit后会产生Change-Id.

Change-Id

Change-Id主要是为gerrit评审用的, 有了change id才能将代码push到gerrit.

Change-Id的作用

  1. push
    格式: git push origin 本地分支名:refs/for/远程分支名.
    push
  1. 查看远程变化
image.png
image.png
image.png
image.png

打标签

1)页面手动create new;
2)本地打好标签, 然后推送至远程: git push origin refs/tags/{标签名}

关于合并

通常我们习惯使用git pull自动合并远程和本地. 但是这里有个神坑: 该命令会在自动merge后, 还会自动提交. 可恶的是自动提交的信息没有Change-Id信息, 这就导致了往gerrit上push时失败.
解决:

  1. 要么使用git pull --no-commit;
    2)万一手欠忘了加--no-commit, 还可以补救, 紧接着输入: git commit --amend --no-edit. 这将会修改最近一次的提交. (no-edit的意思是不修改提交描述, 若要修改描述则用: git commit --amend -m "xxx").

关于abandon

假设先提交了commit A, 但是不知道什么原因, 不能submit(如碰到审核后该按钮是灰色不可点击状态), 这个时候我不得不abandon, 或者被leader因为代码质量问题手动abandon了.
这个时候, 你一定要在本地使用git reset --soft 被abandon掉的那次提交之前的提交, 将abandon对应那次提交相当于在提交历史中'删除'. 否则, 当你commit B后push并审核后, 会出现按钮并提示submit including parents: this change are depends on other change wich are not ready.
这是因为本地依然存在commit A, 从而导致commit B依赖于commit A, 但是commit A在gerrit上是被abandon掉的, 是不可见的. 所以导致无法submit.

[未完待续...]

你可能感兴趣的:(gerrit使用记录)