1.使用git向gerrit提交代码的两种方式:
//方式1:直接提交
git push origin HEAD:ref/for/branch(分支名称)
直接提交需要输入一串与分支名无关的字符,这与gerrit的临时分支有关,可以通过设置避免每次都输入:
在仓库根目录下执行一次命令:
git config remote.origin.push refs/heads/*:refs/for/*
然后以后提交的时候如下:
git push origin branch(分支名称)
2.使用SourceTree向gerrit提交代码
思路就是:写一个shell脚本(比如名字是pushToGerrit.sh),自动获取当前的git分支名,然后git push就可以了,脚本如下:
(注意以下脚本在mac上依旧无法push...这些资料来自windows上的童鞋,在mac上的操作请看第3步)
# 获取当前分支名
branch=`git symbolic-ref --short -q HEAD`
# push review
git push origin HEAD:ref/for/${branch}
最后在SourceTree上配置一个执行这个脚本的快捷操作,如下所示:
然后每次提交的时候不在点击SourceTree的提交,而是选择你创建的自定义操作,如下图所示:
3.在mac上的坑
在mac上发现第一种提交方式会失败,必须要使用第二种方式提交,所以只好修改下脚本,如下:
#需要先执行一次该命令:git config remote.origin.push refs/heads/*:refs/for/*
# 获取当前分支名
branch=`git symbolic-ref --short -q HEAD`
# push 注意是ref不是refs
git push origin ${branch}
个人感觉通过在sourceTree创建自定义操作的方式依旧不方便,还不如在命令行中直接执行上面的脚本文件(前提是你的编译器自带命令窗口...)。