git checkout标签,git pull在分支中失败

时间:2012-04-13 19:55:46

标签: git git-pull git-checkout

我克隆了一个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拉动存储库,当然因为上面的错误而失败..

14 个答案:

答案 0 :(得分:114)

修改:对于较新版本的Git,我们已弃用--set-upstream master,您应该使用--set-upstream-to代替:

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

根据提示,您可以运行:

git branch --set-upstream master origin/master

之后,您只需运行git pull即可更新代码。

答案 1 :(得分:90)

我遇到了同样的问题并使用此命令修复了它:

$ git push -u origin master

在帮助文件中,-u基本上设置了pulls的默认值:

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

答案 2 :(得分:48)

尝试以下命令:

git pull origin master
git push -u origin master

答案 3 :(得分:7)

使用

切换回主分支
$ git checkout master

然后运行git pull操作

$ git pull origin/master

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

答案 4 :(得分:5)

@alesko:仅在结帐git pull后才能my_branch仅更新master分支。
因为git pull也会合并到当前分支 - &gt;在您的方案中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.

答案 5 :(得分:4)

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

git branch --track

之后再次起作用:

git pull

答案 6 :(得分:4)

您可能有多个分支。而你目前的分支机构并未将其上游设置为远程。

解决此问题的步骤:

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

e.g。

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

执行此操作后,当您执行git pull时,它将从指定分支拉出。

答案 7 :(得分:2)

试试这个

git checkout master

git pull origin master

答案 8 :(得分:2)

您可以指定要拉的分支:

git pull origin master

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

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

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

- 显然,在git 1.9.x中不推荐使用set-upstream。 继续前进你想要使用像

这样的东西
git branch -u origin/master

假设你已经检查过主人。如果不, git branch -u origin/master master将有效

答案 9 :(得分: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.

答案 10 :(得分:1)

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

答案 11 :(得分: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/

答案 12 :(得分:0)

为了下载更新:

git fetch origin master

但是,这只会更新名为origin/master的引用。更新本地master的最佳方法是在另一条评论中提及的结帐/合并。 如果,您可以保证本地master未与origin/master所在的主干分歧,您可以使用git update-ref将您当前的master映射到新点,但这可能不是定期使用的最佳解决方案......

答案 13 :(得分:0)

不推荐使用此命令:git branch --set-upstream master origin/master

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

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