git fetch origin和git fetch git://127.0.0.1/之间有什么区别

时间:2018-11-11 07:33:56

标签: git git-remote git-fetch

我正在尝试git,并在~/A中创建了一个仅包含master分支的存储库。

然后我已将此存储库克隆到~/B中(通过在git daemon中启动~/A并运行git clone git://127.0.0.1/)。

然后,我在test中创建了一个新的~/A分支,并尝试在~/B中获得该分支。但是,git fetch git://127.0.0.1/仅显示

From git://127.0.0.1
 * branch            HEAD       -> FETCH_HEAD

要获得新分支,我最终做了git fetch,据我所知,该分支等效于git fetch origin。无论如何,这两个都给我

From git://127.0.0.1
 * [new branch]      test       -> origin/test

之后,通过执行test,可以开始在~/B中的git checkout test分支上工作。

git fetch git://127.0.0.1/显示时,git fetch origingit remote -v可能会有不同的结果

origin  git://127.0.0.1/ (fetch)
origin  git://127.0.0.1/ (push)

守护程序对所有命令显示相同的请求,即

[20291] Extended attribute "host": 127.0.0.1
[20291] Request upload-pack for '/'

1 个答案:

答案 0 :(得分:2)

运行git fetch origin时,您要让git查找您的远程命名源的配置,从配置的URL提取并编写任何fetchspec映射以将远程信息存储在远程跟踪分支中(例如,映射{ {1}}到遥控器的refs/remotes/origin/master)。

运行refs/heads/master时,将绕过远程配置。 git不会尝试将URL匹配到远程并使用远程配置。 (实际上,这可能是模棱两可的,您可以使用相同的URL拥有多个远程服务器,这对于配置不同的提取规范可能很有用。)

相反,git fetch <url>将直接从指定的URL中提取,并将遥控器的git fetch <url>放入您的HEAD文件中。由于没有远程,因此它不会更新远程跟踪分支。您可以检查FETCH_HEAD来查看获取的内容,但是使用远程获取而不是使用url获取要容易得多。