git-新用户尝试进行提取并获得一些令人困惑的消息


73

我是git的新手。我主要是将内容检查到存储库中,但现在我想从其他开发人员那里获得最新的更改。

我试图简单地执行一条命令,就像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>

所以我做了 git pull my_branch_name

它返回了:

fatal: 'develop' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

但是我git checkout my_branch在那之前做过。

有人可以让我知道我做错了什么,如何才能简单地获取已签入的最新文件?

谢谢!

Answers:


63

我认为您在拉动时错过了遥控器的名称:

git pull <remote> my_branch_name

运行以下命令:

git remote -v

并检查您要从中拉出的遥控器的名称是什么

编辑:

如果您是Git的新手,我会为您推荐这本书。它涵盖了从基础到高级的主题,易于理解和阅读


1
remote -v命令向我显示了重新发布的网址。然后,我运行了第一个命令,但出现一个错误,我必须检入最新代码,否则它将被覆盖。然后,我尝试检入最新代码,并收到以下错误消息:错误:无法将一些引用推送到“ branch_path ”提示:由于当前分支的尖端位于提示:其远程对应项的后面,因此拒绝更新。合并远程更改(例如'git pull')提示:在再次推送之前。提示:有关详细信息,请参见“ git push --help”中的“关于快进的注意事项”。
GeekedOut 2012年

我真的鼓励您阅读我在回答中指出的书。不是很大,您将成为git master的人:)
大卫

顺便说一句,您是否尝试过在拉动之前推送到远程存储库?
大卫

我最终要做的是提交我的代码,然后拉出远程分支。奇怪的是它开始进行合并-应该发生什么吗?:)
GeekedOut

发生的事情是您尚未提交更改,因此无法从存储库中提取信息。然后,您尝试推送更改,但是远程存储库中有一些新提交,而本地存储中没有这些提交(这就是快进消息的原因)。最后,是的,每当您从存储库中提取数据时,git都会获取新数据,并尝试合并新数据。因此,git pull= git fetch+ git merge。再一次,我建议您检查那本书,您不会后悔的:)
大卫2012年

47

如第一个错误消息所示,您需要告诉git在为该分支提取时应在哪里查看:

在Git 1.8及更高版本中,确保您已检出开发并运行:

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

或更短:-

git branch -u origin/develop

在1.8版之前的Git中:

git branch --set-upstream develop origin/develop

完成后,您git pull无需指定遥控器或分支即可。

如果尚未设置远程源,请首先运行:

git remote add origin url


1
谢谢!在设置上游命令中,应将URL或存储库放置在哪里?
GeekedOut

2
URL是在远程配置中设置的,而不是在分支机构的上游配置中设置的。
bcmcfc 2012年

1
您如何知道原点是否已设置?当我执行git remote -v时,它返回两行,一行用于(fecth),另一行用于(push)。拉动是否需要第三条线?如果是这样,如何添加它?
约翰·利特尔

1
Git状态已经在主机上说出了Im,这是正确的分支。在git分支--set-upstream master origin / branch中,我不知道应该使用哪种“ master”和“ origin”格式。它们应该是名称,URL,IP地址还是原义词“ master”和“ origin”。我已经阅读了大量的文档页面,而这一关键部分仍在讨论之中。
约翰·利特尔

2
@harschware感谢您提出来,已经更新了答案以支持Git中的更改。
bcmcfc

40

试试这个命令:

git pull origin master
git push -u origin master

嘿,这解决了我的问题,但是您认为您可以解释这到底在做什么吗?谢谢!
jj172 2015年

3
第一个cmd将远程请求拉到本地主分支,第二个cmd将请求拉到远程。-u表示添加上游(跟踪)参考,从而解决了该问题。
纳文斯

3

您可以指定要拉的分支:

git pull origin master

或者,您可以进行设置,以便您的本地master分支将github master分支作为上游进行跟踪:

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将工作


1

我喜欢做的是...

$ git checkout master
$ git pull
$ git checkout <remotebranch>
$ git rebase master
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.