我有两个遥控器设置与git工作令人敬畏,即origin
和production
。为了避免意外地将产品推向生产,如果我只输入origin
,我想只推送到git push
。但是,当我做git push production
和随后的推动将推动生产。我想这与git文档中的以下摘录有关。
当命令行未指定使用参数推送的位置时,将查询当前分支的branch。*。远程配置以确定推送的位置。如果缺少配置,则默认为origin。
我该如何解决这个问题?理想情况下,当我做git push
时,我想得到一条错误消息,以便我总是必须为此repo指定遥控器,或者它永远不会切换到production
。
最接近的可能是将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
全局(即除非明确覆盖,否则为所有repos):
git config --global push.default nothing
这可以通过以下方式实现
git config remote.pushDefault origin
现在,如果省略远程并且只发出git push
,它将推送到原点而不是部署。要推送到另一个遥控器,例如部署,只发出git push deploy
。有关深入信息,请参阅git documentation。