我在相对较短的时间内一直在使用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执行了拉动:
git status:
$ git status
# On branch master
nothing to commit, working directory clean
git branch:
$ git branch
* master
我做错了什么?
答案 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
。
答案 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种方式来实现。
git pull origin master
git branch --set-upstream-to = origin /
答案 9 :(得分:1)
答案 10 :(得分:1)
尝试使用
git push --set-upstream origin <branch_name>
否则
使用
git push -u
会告诉您需要做什么。
答案 11 :(得分:1)
对于任何想要了解为什么会发生这种情况的人,有几个相关概念:
正如其他答案所指出的,解决方案是设置与“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