我不明白这个优点。我看到它在诸如this article之类的地方争论过,取而代之的是提取机会在将它们合并到本地分支之前检查这些更改。git fetch有什么意义?
但是,例如在该文章中,作者使用git diff master origin/master
通过将新获取的分支与其本地主控进行比较来检查所做的更改。
这是我感到困惑的地方....无论您是否先取得指令,该命令都会起作用。无论哪种方式,它都比较本地主人和远程主人。您不需要获取将本地分支与远程分支进行比较。
我错过了什么?
我不明白这个优点。我看到它在诸如this article之类的地方争论过,取而代之的是提取机会在将它们合并到本地分支之前检查这些更改。git fetch有什么意义?
但是,例如在该文章中,作者使用git diff master origin/master
通过将新获取的分支与其本地主控进行比较来检查所做的更改。
这是我感到困惑的地方....无论您是否先取得指令,该命令都会起作用。无论哪种方式,它都比较本地主人和远程主人。您不需要获取将本地分支与远程分支进行比较。
我错过了什么?
您错过了git fetch
已用于更新远程分支的本地副本。
所以你提到的命令会做当地分支master
和本地副本的origin/master
,而不是起源master
分支的实际状态之间的diff
。 fetch
将连接到远程服务器并下载远程的所有更改(更改分支,标签...)。
一如既往,git manual on Branching and Remote Branches解释得很好。
fetch
是下级命令;例如,pull
就是用它来实现的。在大多数情况下,您可能不会直接使用它。
哇。不知道。真的?没有提取,没有办法与远程分支进行比较?你必须有一个远程分支的“本地版本”? – Aerovistae
因为git是一个分布式的CVS,你本地的git仓库将拥有它的本地分支(默认情况下为'master')。但是,如果您使用一个或多个远程服务器,git将制作这些服务器状态的本地副本。他们可能有一些当地的分支机构或不同的分支机构。我不知道有什么方法可以直接对远程回购进行差异化...(至少不在git本身中)。 – achedeuzot
为了与远程仓库进行比较,您必须下载该仓库的状态。网络操作可能会很慢。非常慢为了不会受到网络操作的惩罚*每次运行diff时,git只在明确请求时才进行下载。这就是'git fetch'所做的。 –