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
。
为了只下载更新:
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