当前分支

时间:2015-08-17 17:27:06

标签: git github git-pull

我在相对较短的时间内一直在使用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>

这个回购的唯一贡献者是我,并且没有分支(只是一个主人)。我在Windows上,我已经从git bash执行了拉动:

enter image description here

git status:

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

git branch:

$ git branch
* master

我做错了什么?

14 个答案:

答案 0 :(得分:707)

您可以指定要拉的分支:

git pull origin master

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

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

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

答案 1 :(得分:29)

请参阅: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/

答案 2 :(得分:7)

ComputerDruid的答案很棒,但除非您愿意,否则我认为手动设置上游是必要的。我添加了这个答案,因为人们可能会认为这是必要的步骤。

如果您指定要拉出的遥控器,则此错误将消失:

git pull origin master

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

1) 如何查看远程名称

git remote -v

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

git branch -r

答案 3 :(得分:6)

我经常遇到这个确切的消息,因为我通过git checkout -b <feature-branch-name>创建了一个本地分支,而没有先创建远程分支。

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

答案 4 :(得分:3)

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

2)git pull

答案 5 :(得分:3)

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

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

略有不同,但希望有人帮助

答案 6 :(得分:2)

使用Git 2.24,您不必做

import numba as nb

@nb.njit
def create_empty_set_float64():
    aset = {1.}
    aset.clear()
    return aset

@nb.jitclass([('foo', nb.types.Set(nb.f8))])
class Bar:
    def __init__(self):
        self.foo = create_empty_set_float64()

b = Bar()

您将能够做到:

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

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

答案 7 :(得分:2)

在我创建一个新的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

现在应该可以了!

答案 8 :(得分:2)

发生这种情况是由于当前分支在远程分支上没有跟踪。因此,您可以通过2种方式来实现。

  1. 使用特定的分支名称拉动

git pull origin master

  1. 或者您可以指定分支以跟踪到本地分支。

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

答案 9 :(得分:1)

尝试

   git pull --rebase

希望此答案有助于最初在此处https://stackoverflow.com/a/55015370/8253662

回答

答案 10 :(得分:1)

尝试使用

git push --set-upstream origin <branch_name>

否则

使用

git push -u 

会告诉您需要做什么。

答案 11 :(得分:1)

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

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

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

答案 12 :(得分:0)

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

$ git pull

为我工作!

答案 13 :(得分:0)

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