为什么Git不能默认为“origin master”?

我尝试了很多次

git pull 

它说分支没有指定。 所以在你如何让git总是从一个特定的分支拉动的答案? 似乎工作。

但是我想知道,为什么Git默认为master分支呢? 如果没有指定,是不是有意义的master分支? 是Git试图达到它的名字 – “一个混帐”=一个不愉快的人,所以当你问什么时候,它总是告诉你,“因为你没有说,如果你想知道当地时间或格林威治标准时间,中止。“

git会尝试使用基于当前分支的git pull的合理默认值。 如果你得到的是你在master时从git pull引用的错误,这意味着你没有configurationmaster的上游分支。 在许多情况下,这将会被configuration – 例如,当你从一个仓库git clonegit clone将设置远程的origin指向该仓库,并设置master origin/master为上游,所以git pull将Just Work™ 。

但是,如果您想手动执行此configuration,则可以这样做:

  git branch --set-upstream master origin/master 

…虽然从git 1.8.0开始,你应该使用--set-upstream-to ,因为前者的使用不会因为易混淆的错误而被弃用。 所以,对于git 1.8.0和更高版本你应该这样做:

  git branch --set-upstream-to origin/master 

或者,您也可以在按下时设置适当的configuration:

  git push -u origin master 

…和git pull将做你想要的。

如上所述, git clone适当地设置所有的默认值。 我发现用-u选项推动是最简单的设置与现有的回购。

git push -u origin master

您可以检查使用什么远程configuration

git remote -v

有关更多信息,请参阅git help remote

你为什么要默认从主分支拉? 如果我有一个没有分支名为master的仓库呢? 毕竟,这只是一个名为“主”的分支。

我对你的问题的回答是,git不想妨碍你,并决定你的工作stream程是什么。 通常这不是问题,因为你通常已经设置了远程分支,所以当你使用没有参数的“git pull”时,git知道该怎么做。