Git 签出标记,git 提取在分支中失败

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

135559 次浏览

切换回主分支

$ git checkout master

然后运行 git pull操作

$ git pull origin/master

然后,您可以再次切换到 my_branch

为了下载更新:

git fetch origin master

但是,这只是更新了一个称为 origin/master的引用。更新本地 master的最佳方式是另一条评论中提到的签出/合并。如果你可以保证你的本地 master没有偏离 origin/master所在的主干,你 可以使用 git update-ref将你当前的 master映射到新的点,但是这可能不是定期使用的最佳解决方案..。

我也遇到了同样的问题,用下面的命令解决了:

$ git push -u origin master

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

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

@ alesko : 不可能只在检出 my_branch后才更新 master分支。
因为 git pull也将合并到 目前分支-> 在您的场景中合并到 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 pull origin master
git push -u origin master

编辑: 对于 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 branch --track

之后,这种方法再次奏效:

git pull

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

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 分支—— set-逆流到 = 原点主机 当我再次拉动时,我只从 master 得到更新,警告消失了。

您可能有多个分支,并且当前的分支没有将其上游设置为远程。

解决这个问题的步骤:

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

因此,当尝试建立跟踪时,下面的命令对我有效:

git branch --set-upstream-to=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 pull origin master

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

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

当您克隆一个存储库时(仅针对默认的分支) ,将自动为您设置这个分支跟踪,但是如果您将一个远程服务器添加到现有的存储库中,您必须自己设置这个跟踪。值得庆幸的是,git 给出的建议让我们很容易记住如何做。

显然,在 git 1.9.x 中不推荐 set-逆流。 接下来你可能会用

git branch -u origin/master

假设你已经检查过主人了,如果没有, git branch -u origin/master master会起作用的