要像自動拉去鉤子文件并能夠自動放入.git/hook/目錄下, 請使用
ssh協(xié)議. http協(xié)議經(jīng)測試不能成功.
- 進(jìn)入倉庫地址: http://60.205.93.190/gerrit/admin/projects

- 然后會看到兩個(gè)網(wǎng)址: 1)克隆并自動獲取
commit-msg鉤子文件. 2)僅克隆遠(yuǎn)程倉庫.
image.png
經(jīng)使用發(fā)現(xiàn), 用第一個(gè)地址克隆, 報(bào)錯(cuò):

于是將地址中的鉤子地址:http://liuhejun@60.205.93.190/gerrit/tools/hooks/commit-msg復(fù)制出來, 粘貼瀏覽器地址欄, 回車, 手動下載到桌面.
然后復(fù)制到:path/to/倉庫/.git/hooks/下.
-
新建測試文件:
image.png add & commit
git add .
git commit -m "first"
commit-msg鉤子其實(shí)就是在commit命令執(zhí)行時(shí)調(diào)用的腳本, 相當(dāng)于模板.
投了commit-msg的倉庫, commit后會產(chǎn)生Change-Id.

Change-Id主要是為gerrit評審用的, 有了change id才能將代碼push到gerrit.
Change-Id的作用
- push
格式:git push origin 本地分支名:refs/for/遠(yuǎn)程分支名.
push
- 查看遠(yuǎn)程變化




打標(biāo)簽
1)頁面手動create new;
2)本地打好標(biāo)簽, 然后推送至遠(yuǎn)程: git push origin refs/tags/{標(biāo)簽名}
坑
關(guān)于合并
通常我們習(xí)慣使用git pull自動合并遠(yuǎn)程和本地. 但是這里有個(gè)神坑: 該命令會在自動merge后, 還會自動提交. 可惡的是自動提交的信息沒有Change-Id信息, 這就導(dǎo)致了往gerrit上push時(shí)失敗.
解決:
- 要么使用
git pull --no-commit;
2)萬一手欠忘了加--no-commit, 還可以補(bǔ)救, 緊接著輸入:git commit --amend --no-edit. 這將會修改最近一次的提交. (no-edit的意思是不修改提交描述, 若要修改描述則用:git commit --amend -m "xxx").
關(guān)于abandon
假設(shè)先提交了commit A, 但是不知道什么原因, 不能submit(如碰到審核后該按鈕是灰色不可點(diǎn)擊狀態(tài)), 這個(gè)時(shí)候我不得不abandon, 或者被leader因?yàn)榇a質(zhì)量問題手動abandon了.
這個(gè)時(shí)候, 你一定要在本地使用git reset --soft 被abandon掉的那次提交之前的提交, 將abandon對應(yīng)那次提交相當(dāng)于在提交歷史中'刪除'. 否則, 當(dāng)你commit B后push并審核后, 會出現(xiàn)按鈕并提示submit including parents: this change are depends on other change wich are not ready.
這是因?yàn)楸镜匾廊淮嬖?code>commit A, 從而導(dǎo)致commit B依賴于commit A, 但是commit A在gerrit上是被abandon掉的, 是不可見的. 所以導(dǎo)致無法submit.
[未完待續(xù)...]



