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

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

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

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

按照提示,您可以运行:

 git branch --set-upstream master origin/master 

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

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

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

试试这些命令:

 git pull origin master git push -u origin master 

使用切换回主分支

 $ git checkout master 

然后运行git pull操作

 $ git pull origin/master 

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

@alesko :在checkout my_branch之后只能做git pull来更新master分支是不可能的。
因为git pull也将合并到当前分支 – >在您的schememy_branch

@西蒙 :那也会做推。 这是为什么?

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

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

 git branch --track 

之后,这再次运作:

 git pull 

你可能有多个分支。 而你目前的分支没有在远程设置上游。

步骤来解决这个问题:

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

尝试这个

 git checkout master git pull origin master 

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

 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. 

什么为我工作是:git branch –set-upstream-to = origin master当我再次拉了一次,我只有主从更新,警告消失了。

如果像我一样,你需要一直这样做,你可以通过在你的.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/

为了只下载更新:

 git fetch origin master 

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

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

所以,当试图设置跟踪,这是我的工作的命令:

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