要像自动拉去钩子文件并能够自动放入.git/hook/目录下, 请使用
ssh
协议. http协议经测试不能成功.
- 然后会看到两个网址: 1)克隆并自动获取
commit-msg
钩子文件. 2)仅克隆远程仓库.
image.png
经使用发现, 用第一个地址克隆, 报错:
于是将地址中的钩子地址:http://liuhejun@60.205.93.190/gerrit/tools/hooks/commit-msg复制出来, 粘贴浏览器地址栏, 回车, 手动下载到桌面.
然后复制到:path/to/仓库/.git/hooks/
下.
-
新建测试文件:
image.png add & commit
git add .
git commit -m "first"
commit-msg
钩子其实就是在commit
命令执行时调用的脚本, 相当于模板.
投了commit-msg
的仓库, commit
后会产生Change-Id
.
Change-Id主要是为gerrit评审用的, 有了change id才能将代码push到gerrit.
Change-Id的作用
- push
格式:git push origin 本地分支名:refs/for/远程分支名
.
push
- 查看远程变化
打标签
1)页面手动create new
;
2)本地打好标签, 然后推送至远程: git push origin refs/tags/{标签名}
坑
关于合并
通常我们习惯使用git pull
自动合并远程和本地. 但是这里有个神坑: 该命令会在自动merge后, 还会自动提交. 可恶的是自动提交的信息没有Change-Id
信息, 这就导致了往gerrit上push时失败.
解决:
- 要么使用
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.
[未完待续...]