git - 将当前分支推送到 Gerrit

标签 git gerrit

我喜欢简单地使用 git push 将(仅)当前分支推送到配置的上游。为此,我设置了 git config push.default upstream,这完全正确。

现在我尝试为 Gerrit 设置一个合适的远程,它会自动推送到 refs/for/*

这个想法是这样做的:

[remote "gerrit"]
        url = ssh://host:port/repo
        push = refs/heads/*:refs/for/*

我想输入 git push gerrit 并期望 git 只将当前分支推送到正确的引用。

不幸的是,现在 git 试图将 所有 本地分支推送到 Gerrit。 - 有没有办法告诉 git 像上面的 push.default 一样只推送当前分支?

更新:

  • Git push 只能使用一个 refspec。
  • 如果在命令行上给出了明确的 refspec,则使用这个。
  • 如果命令行中没有给出,则使用 Remote 定义的那个。
  • 如果 Remote 也没有给出,则只考虑 push.default。

对于 Gerrit,我需要一个像“branch:refs/for/branch”这样的 refspec,其中分支是当前分支。

问题:

  • 是否有与 push.default=upstream 所做的等效的显式 refspec?
  • 有没有办法配置 git 使普通 git push 自动推送到正确的 refs/for ref?

目前我发现的最好方法是将所有内容包装在一个单独的脚本中,如建议的 here .但我仍然不相信仅使用合适的 refspec 是不可能的。

最佳答案

根据source ,Git 目前通过生成包含显式名称的显式 refspec 来实现 push.default = upstream

目前似乎没有办法通过单个通用 refspec 来指定该行为,而一些构建显式 refspec 的脚本(如建议的 here )是目前唯一的方法。

关于git - 将当前分支推送到 Gerrit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14320363/

相关文章:

error-handling - Gerrit 错误说无法检查权限

git - 在 Gerrit 中,修改其他作者推送的提交

git - 在 Dockerfile 中使用 git clone "ssh://"

linux - GIT 忽略 commit-msg 钩子(Hook)

merge 后 Git 显示错误的作者

git - 将 git repo 中的所有文件替换为本地计算机上的文件

git - git reset --soft 只更改哈希值吗?

linux - Gerrit prolog规则——充分设置累积投票

git - Bitnami + Redmine + Git 不工作

git - git可以自动切换空格和制表符吗?