我试图将更改从上游转移到我的分支。我试过git fetch https://github.com/someuser/someproject
,但它固执地拒绝做任何事情。它只是说了一些完全神秘而没有做的事情,即:
From https://github.com/someuser/someproject
* branch HEAD -> FETCH_HEAD
但是当我将URL添加为命名远程时,事情发生了变化:
> git remote add upstream https://github.com/someuser/someproject.git
> git fetch upstream
remote: Counting objects: 340, done.
remote: Compressing objects: 100% (268/268), done.
remote: Total 340 (delta 145), reused 18 (delta 16), pack-reused 44
... etc ...
那有什么区别?为什么在没有先添加遥控器的情况下指定遥控器时什么都不做?当我尝试从URL中获取时它究竟告诉我什么?
答案 0 :(得分:1)
我不是这方面的专家,因此我使用Google和the man pages来帮助拼凑正在发生的事情。
This question应揭开事物cb
方面的神秘面纱。我真的不可能通过阅读你的问题告诉你的回购状态是什么,但可能是你的FETCH_HEAD
指向远程仓库中FETCH_HEAD
的最新提交,无论发生什么是。您可能已经在系统上进行了这些提交,因此所有git都更新了HEAD
。你可能想要提供一个分支。
添加遥控器时,您将获得其他功能,例如默认分支和远程跟踪分支。我认为你的第二个命令行为不同,因为FETCH_HEAD
正在使用一些隐含的逻辑来做你通常想要的事情。直接从URL中获取更多是一项高级操作,因此您可以获得更少的假设。
故事的道德,如果你想要工作的东西,添加一个遥控器。否则,准备好应对更多潜在的细节。
答案 1 :(得分:1)
使用网址获取时,还必须指定要获取的<refspec>
,即分支或标记,否则它将仅获取远程URL的默认HEAD
为{ {1}},这可能不是您想要的。
语法是可选的FETCH_HEAD
,后跟+
。如果省略<src>:<dst>
,将使用<dst>
。
例如:
FETCH_HEAD
这将在本地创建git fetch https://github.com/someuser/someproject refs/heads/master:upstream/master
远程分支。