来自git的错误消息


90

我从Git收到此消息:

您要求从远程“来源”提取,但未指定分支。因为这不是当前分支的默认配置的远程服务器,所以必须在命令行上指定一个分支。

有人可以解释吗?更重要的是如何解决它?

Answers:


89

您必须告诉git您要从“原始”远程存储库中拉出哪个分支。

我猜您想使用默认分支(主机),因此git pull origin master应该解决您的问题。

git help branchgit help pullgit help fetch 更多的信息。


2
为了使其正常工作,我不得不检出“ master”分支(没有选择任何分支)并拉出,这解决了问题。
电影院

@cinek:是的,请git pull当前分支合并并合并,因此其行为完全取决于要签出的分支,而对于分离的HEAD(没有签出分支),无法知道要分支的分支。
卡斯卡贝尔

@cinek:我以为您是git的新手,所以我承认您在分支master上处于完全标准的状态,这很糟糕:-)。
p4bl0

86

要解决此问题,请假设您位于master分支机构上,并希望使用足够新的Git版本(1.8或更高版本)masterorigin远程拉分支:

git branch -u origin/master master

(类似于其他分支机构和/或远程站点。)

如果您可以将其与推送结合使用,则它甚至更短:

git push -u origin master

此后,简单的git pull/ git push将完成您的期望。


在Git 1.7系列中,git branch没有-u开关(只有开关git push),而不得不使用更长的时间--set-upstream

git branch --set-upstream master origin/master

请注意,与相比,参数是相反的-u。我多次摸索这个订单。


顺便说一下,所有这些都是执行以下操作的简写,您仍然可以明确地进行以下操作:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

在1.7之前,您必须这样做。


我认为顶部的命令(至少在我的Git版本中)将名为“ origin”的分支的上游设置为“ origin / master”。如果您在本地的分支机构被称为“大师”,我想您会希望:git branch --set-upstream master origin/master
Evan Donovan'4

有趣的是,该-u选项git branch在我的版本1.8.5.3中是未记录的,这使得在此处进行记录变得更加重要。而且,您已经注意到,该选项在1.7。*版中不可用。由于-u是的缩写--set-upstream,难道不应该像--set-upstream@EvanDonovan的注释那样颠倒它的参数顺序吗?
滚刀

但是,当我使用命令显示(git branch -u origin/master master)时,它对我来说是预期的/预期的:“分支母版已设置为从源头跟踪远程分支母版。”
滚刀

1
@hobs:这实际上是Git的变态。该-u开关实际上是没有的缩写形式--set-upstream。它的参数顺序实际上与的顺序相反--set-upstream。我认为直到后来--set-upstream-to才引入(请注意“至”),这-u实际上是现在的简称。
亚里斯多德·帕加尔齐斯

哇!确实令人困惑。感谢您为我解决问题。
滚刀

3

消息确切说明了它的含义。您当前的分支未与origin中的任何分支关联(或未跟踪)。所以git不知道要拉什么。

该怎么办?那要看...

在最常见的情况下,您需要处理一些从master分支的本地分支xyz,该分支从origin的master 克隆而来。解决它的通常方法是切换到master并拉动以使其与原点同步,然后返回到xyz和。rebase master

但是在您的情况下,您可能需要做其他事情。如果不了解分支机构和远程服务器的详细信息以及您打算如何使用它们,我们将一无所知。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.