我正在配置Gerrit
,我想避免写:
git push gerrit HEAD:refs/for/master
Run Code Online (Sandbox Code Playgroud)
我想写:
git push review
Run Code Online (Sandbox Code Playgroud)
我确信它可以修改,.git/config
但我不能使它工作.
小智 25
我设置了两种不同的推送类型,审查和noreview:
评论:
git config remote.review.pushurl ssh://<GERRIT_HOST>:29418/<PROJECT_PATH>.git
git config remote.review.push refs/heads/*:refs/for/*
git push review # this will push your current branch up for review
Run Code Online (Sandbox Code Playgroud)
绕过审查:
git config remote.noreview.pushurl ssh://<GERRIT_HOST>:29418/<PROJECT_PATH>.git
git config remote.noreview.push refs/heads/*
git push noreview # this will push your current branch up, bypassing review
Run Code Online (Sandbox Code Playgroud)
请注意,项目所有者/ Gerrit管理员需要进行一些Gerrit项目更改,以便绕过审核.我认为需要将"推送"权限添加到refs/*的项目中(除非您具体了解哪些分支允许绕过审核).但是,对于评论,已经设置了发布所需的权限.换句话说,如果你的
git push gerrit HEAD:refs/for/master
Run Code Online (Sandbox Code Playgroud)
工作,比上面的"审查"部分也应该工作,而不改变任何其他.
小智 5
你最好做的就是在你的别名中添加一个 Git scriptlet。像这样的东西基于“上游”分支工作,尽管我想稍微清理一下:
[alias]
pub = "!f() { git push -u ${1:-origin} HEAD:`git config branch.$(git name-rev --name-only HEAD).merge | sed -e 's@refs/heads/@refs/for/@'`; }; f"
Run Code Online (Sandbox Code Playgroud)
这样,您只需输入:
git pub
Run Code Online (Sandbox Code Playgroud)
就像你输入的一样:
git push -u origin HEAD:refs/for/master
Run Code Online (Sandbox Code Playgroud)
或者
git push -u origin HEAD:refs/for/myremote-branch
Run Code Online (Sandbox Code Playgroud)
唯一的要求是它仅与 Windows 上的 Git Bash shell 或众多 Linux shell 之一兼容。