138

我克隆了一个 git 存储库,然后签出了一个标签:

# git checkout 2.4.33 -b my_branch

这没关系,但是当我尝试git pull在我的分支中运行时,git 会吐出这个错误:

当前分支没有跟踪信息。请指定要合并的分支。详见 git-pull(1)

git pull <remote> <branch>

如果您希望为此分支设置跟踪信息,您可以这样做:

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

我只想git pull更新主分支,不理会我当前的分支(无论如何它是一个标签)。这样的事情可能吗?

我需要这个的原因是我有一个自动脚本,它总是 git 拉存储库,当然由于上面的错误而失败..

4

14 回答 14

118

编辑:对于较新版本的 Git,--set-upstream master已弃用,您应该--set-upstream-to改用:

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

按照提示,您可以运行:

git branch --set-upstream master origin/master

之后,您可以简单地运行git pull以更新您的代码。

于 2013-04-11T13:13:49.530 回答
92

我有同样的问题并用这个命令修复它:

$ git push -u origin master

从帮助文件中, -u 基本上设置了拉取的默认值:

-u, --set-upstream`

  For every branch that is up to date or successfully pushed, add 
  upstream (tracking) reference, used by argument-less git-pull(1) and
  other commands. For more information, see branch.<name>.merge in 
  git-config(1).
于 2013-01-09T10:08:18.390 回答
48

试试这些命令:

git pull origin master
git push -u origin master
于 2013-03-27T09:14:39.107 回答
10

使用切换回主分支

$ git checkout master

然后运行git pull操作

$ git pull origin/master

之后,您可以再次切换回您的my_branch

于 2012-04-13T20:23:35.290 回答
5

@alesko:不可能只git pull在结帐后才my_branch更新master分支。
因为git pull也会合并到当前分支 -> 在你的场景中my_branch

@Simon:那也可以推动。这是为什么?

$ git branch -u origin/master
Branch master set up to track remote branch master from origin.

并根据文档:

-u <upstream>
  Set up <branchname>'s tracking information so <upstream> is considered  
  <branchname>'s upstream branch. If no <branchname> is specified,  
  then it defaults to the current branch.
于 2013-03-13T15:58:47.043 回答
4

首先,确保您在正确的分支上。
然后(仅一次):

git branch --track

之后,这再次起作用:

git pull
于 2013-10-07T14:00:54.900 回答
4

您可能有多个分支。而且您当前的分支没有将其上游设置为远程。

解决此问题的步骤:

git checkout branch_name
git branch --set-upstream-to=origin/remote_branch_name local_branch_name

例如

// this set upstream of local branch develop to remote branch  origin/develop,
git branch --set-upstream-to=origin/develop develop

这样做之后,当你这样做时git pull,它会从指定的分支中拉取。

于 2014-11-12T04:30:07.887 回答
4

您可以指定要提取的分支:

git pull origin master

或者您可以设置它,以便您的本地主分支跟踪 github 主分支作为上游:

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

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

--set-upstream 显然在 git 1.9.x 中已被弃用。展望未来,你会想要使用类似的东西

git branch -u origin/master

假设您已经签出了 master 。如果没有, git branch -u origin/master master将工作

于 2017-11-23T11:19:31.253 回答
3

如果您像我一样需要一直这样做,您可以通过将以下内容添加到文件中来设置别名以自动执行此.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/

于 2016-02-18T16:33:15.077 回答
2

试试这个

git checkout master

git pull origin master
于 2014-11-14T12:47:45.093 回答
1

您需要为当前分支设置跟踪(上游)

git branch --set-upstream master origin/master

已弃用,而不是您可以使用 --track 标志

git branch --track master origin/master

我也喜欢@casey 注意到的文档参考:

-u <upstream>
  Set up <branchname>'s tracking information so <upstream> is considered  
  <branchname>'s upstream branch. If no <branchname> is specified,  
  then it defaults to the current branch.
于 2014-05-16T15:59:13.793 回答
1

对我有用的是: git branch --set-upstream-to=origin master 当我再次拉动时,我只得到了来自 master 的更新并且警告消失了。

于 2014-09-19T13:48:53.887 回答
0

为了只下载更新:

git fetch origin master

但是,这只是更新了一个名为origin/master. 更新本地的最佳方式master是在另一条评论中提到的结帐/合并。如果您可以保证您的本地master没有偏离主干origin/master,您可以使用git update-ref将您的当前映射master到新点,但这可能不是定期使用的最佳解决方案......

于 2012-04-13T21:55:57.117 回答
0

此命令已弃用:git branch --set-upstream master origin/master

因此,在尝试设置跟踪时,这是对我有用的命令:

git branch --set-upstream-to=origin/master master
于 2015-07-01T17:40:24.500 回答