记录自己使用gerrit提交代码的过程。
公司搭建好gerrit服务、管理员建好项目、给公私钥。
gerrit认证:
登录,输入用户名(密码为空)。
设置-认证:http://192.168.xx.xxx/#/settings/ssh-keys ,
将id_rsa.pub内容添加到key中。
http://192.168.xx.xxx/#/settings/contact
添加自己的邮箱并登陆邮箱激活用户
clone项目:
1、 hookanonymous http
git clone “http://192.168.21.193/scsp”
结果:开始成功了,但是gerrit提交代码失败,少changeID。后来再用这个方式clone失败。
2、http
git clone “http://sunru@192.168.21.193/a/scsp”
要输密码(登录后setting-http password 生成密码)
结果: 可以clone,但是gerrit提交还是失败,少changeID)
3、ssh
没有测试。
4、hook and http
结果: clone成功,commit有changeID,使用gerrit 进行push成功。
【其他】
- git指令:git log
查看所有commit记录。
修改上次提交(amend)
提交的代码需要修改,被打回来。
- 修改要修改的地方
- git add -A
- git commit --amend
输入指令回车后,出现上次提交时的commit 记录;
按insert 键进入编辑模式。
改好后按ESC键, 输入 :wq 回车=> 保存退出。 - push 代码。
==============================================
【clone代码】
第一次clone的时候,会让输入账号密码,这个密码是setting中new的。
=============================================
【gerrit push 被拒】
refs/heads/dev:refs/for/dev [remote rejected] (change http://192.168.19.29:31005/c/clms/+/1699 closed)
查看gerrit, 这条已经abandoned。
解决办法1:
找到一个类似情况的解决方法。
1、git commit --amend
2、删除 changeID
3、保存,退出编辑。
4、删了changeID 会生成新的changeid。再push。
使用之后, push依然被拒绝。
Push rejected: Push dev to origin/refs/for/dev was rejected by remote
解决办法2:
合并最近的几条提交记录,然后push。
git log --oneline:确实存在几条commit。
1、合并commit记录: git rebase -i HEAD~3 【合并最近三条】。
2、 选择保留还是舍弃各条commit。
3、改完后 wq退出。
4、再次push。成功。
===================================================
冲突解决:
提交新的代码时,运行git add -A
运行commit
在运行git pull --rebase 时,显示有文件在本地被删。(看样子应该是冲突了)。
解决完冲突, 再: git add -A
运行:git rebase --continue
最后push到gerrit。
ok,解决问题,push成功。