git push

时间:2017-12-11 20:58:23

标签: git deployment push risk-management

我有两个遥控器设置,git工作得很棒,即originproduction。为了避免意外地将内容推送到制作中,如果我只输入origin,我只想推送到git push。但是,当我做git push production时,随后的推动将推向生产。我想这与git文档中的以下摘录有关。

  

当命令行没有指定参数的推送位置时,分支。*。remote          咨询当前分支的配置以确定推送的位置。如果配置是          缺少,它默认为原点。

我如何解决这个问题?理想情况下,当我git push时,我想收到一条错误消息,以便我始终必须为此repo指定远程,,以便它永远不会切换到production

2 个答案:

答案 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