1、在 git clone 时需要注意将 commit-msg hook 也 copy 下来,例如:
git clone ssh://zhoumin@abc.cn:8090/def && scp -p -P 8090 zhoumin@abc.cn:hooks/commit-msg def/.git/hooks/
2、在提交之前需要检查以下三项是否正确,包括 Author 的邮箱信息、Change-Id、Signed-off-by,否则可能会无法通过自动化脚本检查。
Author: zhoumin <zhoumin@abc.cn>
xxxx
Change-Id: I036d884060ca4486e6f0baebc5a069aa8e40617f
Signed-off-by: zhoumin <zhoumin@abc.cn>
3、代码提交评审
git push origin HEAD:refs/for/target_branch
4、使用 http 协议
gerrit 支持匿名 http、http 和 ssh 协议来克隆和提交代码。当选择 http 协议时,还需要在设置中生成和复制 http 密码来进行代码的克隆和提交。
5、多 feature 并行开发
在本地新建多个分支,并都同步到远程分支的最新提交上,然后开发,最后分别提交 patch,例如:
$ git fetch
$ git checkout -b feature1 remotes/origin/target_branch
$ git checkout -b feature2 remotes/origin/target_branch
$ ...
$ coding ...
$ ...
$ git pull --rebase
$ git push origin HEAD:refs/for/target_branch
$ ...
6、gerrit 拒绝推送
如果出现如下拒绝推送的错误:
[remote rejected] xxx -> refs/for/xxx (no new changes)
可以考虑使用 git commit –amend 来生成新的 commit-id,然后再重新推送。