当前分支没有跟踪信息

There is no tracking information for the current branch

我使用 github 的时间相对较短,而且我一直使用客户端来执行提交和拉取。我决定从昨天 git bash 开始尝试,我成功地创建了一个新的 repo 并提交了文件。

今天我从另一台计算机对存储库进行了更改,我已经提交了更改,现在我回到家并执行了 git pull 来更新我的本地版本,我得到了这个:

There is no tracking information for the current branch.
    Please specify which branch you want to merge with.
    See git-pull(1) for details

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream develop origin/<branch>

这个 repo 的唯一贡献者是我,没有分支(只有 master)。我在 windows 并且我已经从 git bash:

执行了拉取

git状态:

$ git status
# On branch master
nothing to commit, working directory clean

git 分支机构:

$ git branch
* master

我做错了什么?

您可以指定要拉取的分支:

git pull origin master

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

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

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

参见:git checkout tag, git pull fails in branch

如果像我一样您需要一直这样做,您可以通过将以下内容添加到您的 .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 checkout -b <feature-branch-name> 创建本地分支而没有首先创建远程分支。

在完成所有工作并在本地提交后,修复 git push -u 创建了远程分支,推送了我所有的工作,然后是合并请求 URL。

1) git 分支 --set-upstream-to=origin/<master_branch> feature/<your_current_branch>

2) git拉

我正在尝试上述示例,但无法让它们与我在另一台计算机上创建的(非主)分支同步。作为背景,我在计算机 A (git v 1.8) 上创建了这个存储库,然后将存储库克隆到计算机 B (git 2.14) 上。我在 comp B 上进行了所有更改,但是当我尝试将更改拉到计算机 A 上时,我无法这样做,出现了上述相同的错误。与上述解决方案类似,我必须这样做:

git branch --set-upstream-to=origin/<my_branch_name> 
git pull

略有不同,但希望对某人有所帮助

ComputerDruid 的回答很好,但我认为没有必要手动设置上游,除非你愿意。我添加这个答案是因为人们可能认为这是必要的步骤。

如果你像下面这样指定你想要拉的遥控器,这个错误就会消失:

git pull origin master

请注意,origin 是远程名称,master 是分支名称。


1) 如何查看遥控器名称

git remote -v

2) 如何查看存储库中可用的分支。

git branch -r

尝试

   git pull --rebase

希望这个回答对最初回答这里有所帮助

使用 Git 2.24,您将不必这样做

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

您将能够做到:

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

在“default remote and branch using -u option - works with push but not pull”查看更多信息。

$ git branch --set-upstream-to=heroku/master master

$ git pull

对我有用!

同样的事情发生在我之前,当我创建一个新的 git 分支而不是将它推送到原点时。

尝试先执行这两行:

git checkout -b name_of_new_branch # create the new branch
git push origin name_of_new_branch # push the branch to github

然后:

git pull origin name_of_new_branch

现在应该没事了!

发生这种情况是因为当前分支没有对远程分支的跟踪。所以你可以用两种方式做到这一点。

  1. 使用特定分支名称拉取

    git pull origin master

  2. 或者您可以通过特定的分支跟踪到本地分支。

    git branch --set-upstream-to=origin/<branchName>

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

尝试使用

git push --set-upstream origin <branch_name>

否则

使用

git push -u 

会告诉你需要做什么。

对于任何想了解为什么会发生这种情况的人,这里有一些相关概念:

  • 一个 git 存储库可以有零个或多个“远程”,它们被命名为指向其他存储库的链接,通常在某个中央服务器上。您可以使用“git remote -v”
  • 列出它们
  • 如果您从另一台服务器克隆存储库,将为您设置一个名为“origin”的默认远程。
  • git 推送和 git 拉取的完整语法是指定远程名称和该远程上的分支。
  • 本地分支可以与远程分支相关联,这样您就不必在每次拉取或推送时都输入它。
  • 如果您使用“git switch branchname”或“git switch -u origin/branchname”从远程存储库检出分支,将为您设置关联。 (“git switch”在这种情况下与“git checkout”相同)
  • 如果你在本地创建一个分支,然后用“git push -u origin”推送它,它会设置关联。
  • 但是如果你在最初的pull或push中不包含“-u”,关联将不会被存储,所以你每次都必须具体.

正如其他答案指出的那样,解决方案是设置与“git branch --set-upstream-to=origin/branchname”的关联,其中“origin”是名称远程,“branchname”是分支在远程服务器上的名称。这可能与它在本地的名称相同,但不一定如此。

步骤 1

$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=<remote>/<branch> master

第 2 步

$ git branch -u origin/master
Branch 'master' set up to track remote branch 'master' from 'origin'.

第 3 步

$ git pull
Already up to date.