当前分支没有跟踪信息


579

我一直在相对较短的时间内使用github,并且我一直使用客户端执行提交和请求。我决定昨天从git bash尝试一下,我成功创建了一个新的repo和提交的文件。

今天,我从另一台计算机对存储库进行了更改,已经提交了更改,现在我回到家并执行了git pull更新本地版本的操作,我得到了:

There is no tracking information for the current branch.
    Please specify which branch you want to merge with.
    See git-pull(1) for details

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream develop origin/<branch>

此仓库的唯一贡献者是我,并且没有分支机构(只是管理员)。我在Windows上,并且执行了git bash的拉动:

在此处输入图片说明

git状态:

$ git status
# On branch master
nothing to commit, working directory clean

git分支:

$ git branch
* master

我究竟做错了什么?


好吧,怎么样git remote -v?那是什么意思
criswell


如果您在执行时没有CD进入克隆的repo目录,也可能会收到该错误git pull
维多利亚·斯图尔特

使用Git 2.24,git pull --set-upstream-to=origin/master master可以在2019年第四季度发布。请参阅下面的答案
VonC

Answers:


948

您可以指定要拉的分支:

git pull origin master

或者,您可以进行设置,以便您的本地master分支将github master分支作为上游进行跟踪:

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

克隆存储库时(仅适用于默认分支),会自动为您设置此分支跟踪,但是如果将远程站点添加到现有存储库中,则必须自己设置跟踪。值得庆幸的是,git给出的建议使人们很容易记住该怎么做。


3
完善!有效。所以发生了什么事,没有默认的“ git pull”的“默认分支”吗?这就是为什么有错误?
valerio0999

16
--set-upstream显然在git 1.9.x中已被弃用。继续git branch -u origin/master进行下去,假设您已经签出master,那么您将想要使用,例如。如果没有,git branch -u origin/master master将工作。
巴特阅读

5
@BartRead将其更新为使用新的更清晰的--set-upstream-to=语法。(替代--set-upstream
ComputerDruid

59
这似乎是一种令人遗憾的状况-我们真的需要为每个分支手动设置此设置吗?为什么我们不能仅将origin设置为默认的远程,然后将每个push / pull默认设置为具有相同名称的origin上的分支?这样难吗?
亚历山大·米尔斯

4
嗯,这对我来说很关键,如果您放下并重新创建遥控器,则原始设置的跟踪将fetch丢失。因此,需要重新设置它。:)

42

请参阅:git checkout标签,git pull在分支中失败

如果像我一样需要始终执行此操作,则可以通过将以下内容添加到.gitconfig文件中来设置别名来自动执行此操作:

[alias]
    set-upstream = \
       !git branch \
           --set-upstream-to=origin/`git symbolic-ref --short HEAD`

当您看到消息时There is no tracking information...,运行:

 git set-upstream
 git push

感谢https://zarino.co.uk/post/git-set-upstream/


1
这是一种将其添加到.gitconfig一行中的全局方法(可以相应地针对本地或其他配置进行修改):git config --global alias.set-upstream '!git branch --set-upstream-to=origin/$(git symbolic-ref --short HEAD)'
Danny Bullis

17

ComputerDruid的答案很好,但除非您愿意,否则我认为没有必要手动设置上游。我添加此答案是因为人们可能认为这是必要的步骤。

如果您按如下方式指定要拉出的遥控器,此错误将消失:

git pull origin master

请注意,这origin是远程名称,master也是分支名称。


1)如何检查遥控器的名称

git remote -v

2)如何查看存储库中可用的分支。

git branch -r

1
对我来说最好的答案,谢谢!
Bahman.A

7

我经常碰到这个确切的消息是因为我git checkout -b <feature-branch-name>没有先创建远程分支就创建了本地分支。

所有工作完成并提交到本地后,修复程序git push -u创建了远程分支,推送了我所有的工作,然后合并请求URL。


1
为了它的价值,我不得不运行git push -u origin <my-feature-branch-name>以创建远程分支并推动我的工作
Donnie C

6

我正在尝试上述示例,但无法使它们与我在另一台计算机上创建的(非主)分支同步。作为背景,我在计算机A(git v 1.8)上创建了此存储库,然后将该存储库克隆到计算机B(git 2.14)上。我在组件B上进行了所有更改,但是当我尝试将更改拖到计算机AI上时却无法执行此操作,并得到与上面相同的错误。与上述解决方案类似,我必须这样做:

git branch --set-upstream-to=origin/<my_repository_name> 
git pull

稍有不同,但希望能帮助某人


这对我有用;我还使用了在另一台计算机上设置的非主分支。然后,在Git Bash中使用此命令,我就能得到我的更改:)
Novastorm



3

1)git branch --set-upstream-to = origin / <master_branch>feature /<your_current_branch>

2)git拉


1

$ git branch --set-upstream-to=heroku/master master

$ git pull

为我工作!


1

在我创建一个新的git分支而不将其推送到源头之前,我发生了同样的事情。

尝试先执行这两行:

git checkout -b name_of_new_branch # create the new branch
git push origin name_of_new_branch # push the branch to github

然后:

git pull origin name_of_new_branch

现在应该很好!


1

发生这种情况是由于当前分支在远程分支上没有跟踪。因此,您可以通过2种方式来实现。

  1. 用特定的分支名称拉

git pull起源大师

  1. 或者,您可以特定分支跟踪到本地分支。

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


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.