如何设置执行以下操作的refspec?

时间:2013-12-12 04:18:07

标签: git

这可以将我的“主”分支推送到远程分支“生产”

git push origin master:refs/heads/production

但是,如何保存远程位置,以便我可以执行git push production master?我不想在本地生产分支。它是发展直到我推动它。然后我只想做

git merge production

在服务器上抓取最新副本。

2 个答案:

答案 0 :(得分:2)

我认为你不能在这里得到你想要的东西(“你想要的是什么”git push production master),但你可以通过两个配置条目获得更简单的东西:

git config remote.production.url ssh://...
git config remote.production.push master:production

之后:

git push production

将推送到指定的网址(注意:您可以设置remote.production.pushurlproduction制作单独的网址以进行提取和推送,但这可能不需要。由于远程后没有refspec,git push会咨询remote.production.push来设置一个。由于 一个remote.production.push,它将使用它而不是任何已配置的branch.master.remotebranch.master.merge(如果存在)或remote.pushdefault(如果这些)不存在)。

这里的缺点是如果你不小心写了:

git push production master

然后git push会看到您指定了refspec并忽略remote.production.push。指定的refspec等同于(完整的longwinded版本)refs/heads/master:refs/heads/master


为了避免这个最后的缺点,你可以简单地配置别名,而不是愚弄所有这些,例如:

git config alias.pushprod "push origin master:production"

之后:

git pushprod

是“输入”已经运行的完整命令的更短路径。

答案 1 :(得分:0)

如果你这样做

git push -u origin master:refs/heads/production

然后Git会记住上游分支(-u代表“设置上游”)。