我有两个遥控器设置,git工作得很棒,即origin
和production
。为了避免意外地将内容推送到制作中,如果我只输入origin
,我只想推送到git push
。但是,当我做git push production
时,随后的推动将推向生产。我想这与git文档中的以下摘录有关。
当命令行没有指定参数的推送位置时,分支。*。remote 咨询当前分支的配置以确定推送的位置。如果配置是 缺少,它默认为原点。
我如何解决这个问题?理想情况下,当我git push
时,我想收到一条错误消息,以便我始终必须为此repo指定远程,或,以便它永远不会切换到production
答案 0 :(得分:1)
最接近的可能是将push.default
配置为nothing
(请参阅git-config reference for push.default):
什么都没有 - 除非明确给出refspec,否则不要推送任何东西(错误输出)。这主要是针对那些希望通过始终明确避免错误的人。
如果没有给出refspec,它将打印错误,即没有指定要推送的分支。这意味着推送需要始终包含远程和分支两者,以确保需要明确指定远程。
要配置的命令是:
git config push.default nothing
显示生成错误的示例:
$ git push
fatal: You didn't specify any refspecs to push, and push.default is "nothing".
$ git push origin
fatal: You didn't specify any refspecs to push, and push.default is "nothing".
$ git push origin master
Counting objects: 2, done.
...
请注意,您也可以使用HEAD而不是显式分支名称来表示当前已检出的分支。
由于这提供了一些防止意外推送的安全性,我通常会将push.default
全局配置为nothing
(即除非明确覆盖,否则为所有回购):
git config --global push.default nothing
答案 1 :(得分:0)
这可以通过
来完成git config remote.pushDefault origin
现在,如果省略远程并发出git push
,它将推送到原点而不进行部署。要推送到另一个遥控器,例如部署,只需发布git push deploy
。有关详细信息,请参阅git documentation。