我多次尝试过
git pull
并且它表示未指定分支。所以How do you get git to always pull from a specific branch?中的答案似乎有效。
但是我想知道,为什么Git不默认为master
分支?如果没有指定任何内容,那么表示master
分支是否有意义? Git是否试图辜负它的名字 - “一个混蛋”=一个不愉快的人,所以当你问什么时候它,它总是告诉你,“因为你没有说你是否想知道当地时间或格林威治标准时间,中止。“
答案 0 :(得分:78)
git尝试根据您当前所在的分支使用git pull
的合理默认值。如果您在git pull
时遇到master
引用的错误,则表示您尚未为master
配置上游分支。在许多情况下,这将被配置 - 例如,当您从存储库克隆时,git clone
将设置origin
远程指向该存储库并使用{{设置master
1}}作为上游,所以origin/master
将Just Work™。
但是,如果您想手动进行配置,可以使用:
git pull
...虽然从git 1.8.0开始,你应该使用 git branch --set-upstream master origin/master
,因为之前的使用不会因为容易混淆而容易被弃用。因此,对于git 1.8.0及更高版本,你应该这样做:
--set-upstream-to
或者您可以在推送时使用以下方式设置适当的配置:
git branch --set-upstream-to origin/master
...而 git push -u origin master
会做你想做的事。
答案 1 :(得分:7)
如上所述,git clone
会适当地设置所有默认值。
我发现使用-u
选项推送最容易设置现有的回购。
git push -u origin master
您可以使用
查看远程配置的内容
git remote -v
有关详细信息,请参阅git help remote
。
答案 2 :(得分:0)
为什么要默认从主分支拉?如果我的存储库没有名为master的分支怎么办?毕竟,它只是一个名为“master”的分支。
我对你的问题的回答是,git不想妨碍你并决定工作流程应该是什么。通常这不是问题,因为你通常已经设置了远程分支,所以当你使用没有参数的“git pull”时,git知道该怎么做。