git:无法跟踪远程分支或做'git pull'

时间:2014-03-22 01:58:54

标签: git

考虑以下情况:

$ git remote show origin * remote origin Fetch URL: /var/origin.git Push URL: /var/origin.git HEAD branch: master Remote branches: master tracked test new (next fetch will store in remotes/origin) Local refs configured for 'git push': master pushes to master (up to date)

现在我想拉那个遥控测试'科。所以我试试这个:

$ git checkout --track origin/test fatal: git checkout: updating paths is incompatible with switching branches. Did you intend to checkout 'origin/test' which can not be resolved as commit?

其他人说要解决这个问题,我只需要做一下“git pull'”。这不是我拉的正常方式。我通常做的是git pull origin master'。如果我尝试,会发生什么:

$ git pull fatal: Where do you want to fetch from today?

这里有些致命的错误。我只想跟踪/获取远程分支,以便我可以进行编辑并将其推回。我需要做些什么才能实现这一目标?

2 个答案:

答案 0 :(得分:0)

您只需先运行git fetch origin

git remote show连接到相关的遥控器并查询它,la git ls-remote(您也应该尝试将其视为正常运行 - 与git remote show一样只会环顾四周,并没有触及任何东西):

$ env GIT_TRACE=1 git remote show origin
trace: built-in: git 'remote' 'show' 'origin'
trace: run_command: 'ssh' 'host' 'git-upload-pack '\''path'\'''
* remote origin
...

git remote show打印"远程分支"在这一点上,它告诉你在有问题的遥控器上存在哪些分支(作为本地分支"在那里")。除了这些信息之外,它还会告诉您您的存储库(#34;在这里"而不是在另一台主机上)是否有副本远程的想法那些分支。上面显示你的git 知道他们的git' master,即你有origin/master; 1 但是你的git 尚未知道他们的git' test,即 origin/test

理论上,你的git 可以更新他们的git所拥有的想法"在那里"现在:毕竟,它刚刚被发现了。它也可以在您运行git ls-remote时执行此操作。但它没有:它的git fetch指示你的git从他们的git中获取新信息并将其保存在你身边。 showls-remote操作只会让您知道git fetch 可以做什么;他们实际上并没有这样做。

括号中的(next fetch will store in remotes/origin)告诉您,如果您运行git fetch,您的git将与其git同步,并且假设您运行git remote show和实际运行的时间git fetch - 获取remotes/origin/test


1 此引用的全名是refs/remotes/origin/master,但可以缩写为origin/masterremotes/origin/master。 Git对它使用的缩写并不十分一致,只是如果名称变得模糊不清,它往往会使用更长,更明确的版本。另请参阅the gitrevisions documentation

答案 1 :(得分:0)

解决。

git pull -u origin master执行此命令后,我仍然无法执行git pull

git push -u origin master执行此命令后,我现在可以执行git pull并按照我的意愿结帐分支。

相关问题