"git fetch <url>"和"git add remote upstream <url>"后跟"git fetch upstream"有什么区别?

Rom*_*kov 5 git git-fetch

我试图将上游的变化拉到我的前叉.我试过了git fetch https://github.com/someuser/someproject,但它固执地拒绝做任何事情.它只是说了一些完全神秘而没有做的事情,即:

From https://github.com/someuser/someproject
 * branch            HEAD       -> FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)

但是当我将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 ...
Run Code Online (Sandbox Code Playgroud)

那有什么区别?为什么在没有先添加遥控器的情况下指定遥控器时什么都不做?当我尝试从URL中获取时,它到底告诉我的是什么?

Did*_*r L 3

当您使用 URL 进行获取时,您还必须指定<refspec>要获取的内容,即分支或标记,否则它只会获取HEAD远程 URL 的默认值FETCH_HEAD,这可能不是您想要的。

语法是可选的,+后跟<src>:<dst>。如果省略<dst>,FETCH_HEAD将被使用。

例如:

git fetch https://github.com/someuser/someproject refs/heads/master:upstream/master
Run Code Online (Sandbox Code Playgroud)

这将在本地创建upstream/master远程分支。

可以使用更高级的选项。