【发布时间】:2013-01-14 14:30:33
【问题描述】:
我喜欢简单地使用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,则使用这个。
- 如果命令行中没有给出任何参数,则使用远程定义的那个。
- 如果遥控器也没有指定,则仅考虑 push.default。
对于 Gerrit,我需要一个类似于 'branch:refs/for/branch' 的 refspec,其中分支是当前分支。
问题:
- 是否存在与 push.default=upstream 正在执行的操作等效的显式 refspec?
- 有没有办法配置 git 以使普通的
git push自动推送到正确的 refs/for ref?
目前我发现的最好方法是将所有内容包装在一个单独的脚本中,如建议的here。但我仍然不相信仅使用合适的 refspec 是不可能的。
【问题讨论】:
-
好的。只需在此处检查不同的选项。我了解到
push.default只有在没有给出 refspec 时才会被考虑。而且,如果您通过命令行提供 refspec(如HEAD),这将覆盖遥控器给出的 refspec。因此它只会推送到ref/heads,这不是你想要的。很有趣。