为什么Git不能默认为“origin master”?
我尝试了很多次
git pull
它说分支没有指定。 所以在你如何让git总是从一个特定的分支拉动的答案? 似乎工作。
但是我想知道,为什么Git默认为master
分支呢? 如果没有指定,是不是有意义的master
分支? 是Git试图达到它的名字 – “一个混帐”=一个不愉快的人,所以当你问什么时候,它总是告诉你,“因为你没有说,如果你想知道当地时间或格林威治标准时间,中止。“
git会尝试使用基于当前分支的git pull
的合理默认值。 如果你得到的是你在master
时从git pull
引用的错误,这意味着你没有configurationmaster
的上游分支。 在许多情况下,这将会被configuration – 例如,当你从一个仓库git clone
, git 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知道该怎么做。