使用SourceTree推送到gerrit

Jos*_*seM 14 git gerrit atlassian-sourcetree

我无法弄清楚如何将SourceTree推向Gerrit.

我看到了这个链接,但我仍然不明白它是如何做到的:https: //answers.atlassian.com/questions/29361/configuring-sourcetree-push-for-gerrit

显然,根据1.3.3的发行说明,有一种方法可以做到,但我无法弄明白:http://www.sourcetreeapp.com/update/ReleaseNotes.html#version-1.3.3

是否有一步一步指导如何做到这一点?

现在我在终端上运行这个命令来推送

git push origin HEAD:refs/for/master
Run Code Online (Sandbox Code Playgroud)

moz*_*t27 30

我相信atlassian提供的答案是当您看到Push对话框时更改远程分支的名称.

  1. 打开推送对话框
  2. 单击"远程分支"列下的远程分支名称(我的目前是"主")
  3. 输入新的remo分支名称 - 对我来说,这将是'refs/for/master'
  4. 单击确定.

这似乎已经将提交正确地推送到Gerrit中.我现在遇到的问题是'refs/for/master'值不会持续存在.现在想出来.一旦我弄明白,我会更新这篇文章.希望这有助于即使它在游戏的后期.

更新:事实证明,您需要在.git/config中的远程源下添加推送条目.你应该通过git config命令执行此操作(因为我手动编辑了文件,我确定这是不好的做法).我写的推线是:

push = refs/heads/*:refs/for/*
Run Code Online (Sandbox Code Playgroud)

为清楚起见,这是我在.git/config中的远程源条目:

[remote "origin"]
    url = ssh://gerrit-test.example.com:29418/mystuff.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    push = refs/heads/*:refs/for/*
Run Code Online (Sandbox Code Playgroud)

在SourceTree中,你现在可以推动,它将推动gerrit而不是最终的回购.(你现在也可以在没有指定任何其他内容的情况下执行git push,它会推动gerrit).请注意,在推送之后,SourceTree仍然会在"推送"按钮上显示一个数字,表示您仍有需要推送的内容.这是因为它仍然从主仓库获取,并且您已经推入gerrit的更改尚未合并到主仓库中.将更改合并到主仓库后,"推送"按钮上的数字将消失.

  • 再次感谢.以下是如何通过git config命令执行此操作:`git config remote.origin.push refs/heads/*:refs/for/*` (7认同)