2012-04-13 160 views
126
失败

我已经克隆一个Git仓库,然后检查了一个标签:git的结帐标签,混帐拉分支

# git checkout 2.4.33 -b my_branch 

这是确定的,但是当我尝试运行我的分支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 new origin/<branch> 

我想git pull只更新master分支并独自离开我现在的分支(这是一个标签反正)。是这样的可能吗?

我之所以需要这个是我总是git的拉库,当然,因为上述错误的失败时自动脚本..

+0

可能重复[git pull:没有当前分支的跟踪信息](http://stackoverflow.com/questions/32056324/git-pull-there-is-no-跟踪信息为当前分支) – daisy 2016-07-21 14:52:20

回答

103

编辑:对于Git的更新版本,--set-upstream master已被弃用,你应该使用--set-upstream-to代替:

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

因为它提示,你可以运行:

git branch --set-upstream master origin/master 

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

+4

这解决了这个问题。但我仍然需要了解我的主分支如何失去对原点的指称。我在一个分支上做了'git checkout master'。我不能做'拉屎',因为对原点的引用丢失了。现在它可以工作。谢谢! – Ariel 2014-12-12 13:22:48

6

切换回主分支使用

$ git checkout master 

然后运行git pull操作

$ git pull origin/master 

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

+6

这正是我想要避免的。我想知道是否有“官方”的方式来做到这一点。 – alesko 2012-04-13 21:35:07

0

为了只下载更新:

git fetch origin master 

然而,这只是更新一个名为origin/master参考。更新您当地的master的最好方法是在另一条评论中提到的结账/合并。 如果你能保证你的本地master还没有从主干线是origin/master是分道扬镳,你使用git update-ref映射当前的master到新的点,但是这可能不是最好的解决方案,使用上定期...

90

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

$ 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). 
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. 

和acording到文档:

-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. 
47

尝试键入以下命令:

git pull origin master 
git push -u origin master 
4

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

git branch --track 

之后,这个作品再次:

git pull 
1

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

git branch --set-upstream master origin/master 

已被弃用,而不是你可以使用--track flag

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. 
1

什么工作对我来说是:只有 的Git分支--set上游到原点=主 当我再次做了一次拉我从主人那里得到了更新,警告消失了。

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,它从指定的分支拉。

2

试试这个

git checkout master 

git pull origin master 
+2

这不是真的回答这个问题。虽然没有被接受的答案,但顶级投票者对这个老问题的答案要合适得多 – fejese 2014-11-14 13:15:33

0

此命令已过时:git branch --set-upstream master origin/master

因此,试图建立跟踪时,这是为我工作的命令:

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

如果像我需要一直这样做,你可以设置一个别名,通过将以下内容添加到.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

你可以指定你想拉哪个分支:

git pull origin master 

或者你可以设定,让您的本地master分支轨道的github主分支作为上游:

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

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

--set-upstream在git 1.9.x中已被弃用,显然。 今后你想使用类似

git branch -u origin/master 

假设你已经签出大师。如果不是, git branch -u origin/master master将工作