我喜欢简单地使用 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/