我克隆了一个 git 存储库,然后签出了一个标签:
# git checkout 2.4.33 -b my_branch
这没关系,但是当我尝试在我的分支中运行 git pull
时,git 会吐出这个错误:
当前分支没有跟踪信息。请指定要合并的分支。详见 git-pull(1) git pull
我希望 git pull
只更新 master 分支并单独保留我当前的分支(无论如何它是一个标签)。这样的事情可能吗?
我需要这个的原因是我有一个自动脚本,它总是 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 :不可能只在结帐后只做 git pull
my_branch
来更新 master
分支。
因为 git pull
也会合并到 current 分支 - >在您的场景中到 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.
首先,确保您在正确的分支上。然后(仅一次):
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 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
将起作用
如果您像我一样需要一直这样做,您可以通过将以下内容添加到您的 .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 config --global alias.set-upstream '!git branch --set-upstream-to=origin/`git symbolic-ref --short HEAD`'
尝试这个
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 当我再次拉动时,我只得到了来自 master 的更新并且警告消失了。
为了只下载更新:
git fetch origin master
但是,这只是更新了一个名为 origin/master
的引用。更新本地 master
的最佳方式是在另一条评论中提到的结帐/合并。 如果您可以保证您的本地 master
没有偏离 origin/master
所在的主干线,您可以使用 git update-ref
映射您当前的 master
} 到新的点,但这可能不是定期使用的最佳解决方案......
此命令已弃用:git branch --set-upstream master origin/master
因此,在尝试设置跟踪时,这是对我有用的命令:
git branch --set-upstream-to=origin/master master
不定期副业成功案例分享
git checkout master
。我无法执行git pull
,因为对 origin 的引用丢失了。现在它起作用了。谢谢!