我正在使用Gerrit Code Review设置Git,并且正在寻找一种方法,为可能不熟悉Git的用户提供必要的Git命令.
我目前用于启动新功能分支的命令基本上是(假设Gerrit是origin):
git checkout baseline
git pull
git checkout -b work1234
git push -u origin work1234
Run Code Online (Sandbox Code Playgroud)
这将启动一个新的工作包work1234从一些baseline分支,最后的推动在Gerrit中创建分支并设置上游.所以.git/config看起来像:
[branch "work1234"]
remote = origin
merge = refs/heads/work1234
Run Code Online (Sandbox Code Playgroud)
现在,Gerrit希望将新的提交审查推送到特殊的refspec,refs/for/work1234例如.我可以手动执行以下操作:
git push origin work1234:refs/for/work1234
Run Code Online (Sandbox Code Playgroud)
我想要做的是找到一些设置方法,.git/config以便plain git push将当前分支推送到Gerrit所需的远程refspec.我看过以下几个git config方面:
branch.<name>.* - 似乎没有任何特定的选项来设置push refspecpush.default- 我想要upstream在这里remote.<name>.push- 我refs/heads/*:refs/for/*在这里试过但git push总是想在这种情况下推送所有本地分支,而我只想要当前的分支如果我不能让Git的本身做到这一点,我会写一个小包装脚本,完全指定refspecs.但是,如果Git能够本地推向正确的位置会更好.
我喜欢简单地使用git push(仅)将当前分支推送到配置的上游.为此,我设置git config push.default upstream哪个做正确的事情.
现在我尝试为Gerrit设置一个合适的遥控器,它会自动推送到refs/for/*.
这个想法是这样做的:
[remote "gerrit"]
url = ssh://host:port/repo
push = refs/heads/*:refs/for/*
Run Code Online (Sandbox Code Playgroud)
我想键入git push gerrit并期望git只将当前分支推送到正确的ref.
不幸的是现在git试图将所有本地分支推送到Gerrit.- 有没有办法告诉git只推送当前分支,push.default如上所述?
更新:
对于Gerrit,我需要一个refspec,比如'branch:refs/for/branch',branch是当前的分支.
题:
git push自动推送到正确的refs/ref?目前,像建议我发现最好的办法是在包装一个单独的脚本都在这里.但我仍然不相信只有合适的refspec是不可能的.