git远程更新和获取之间的区别?

git远程更新和获取之间的区别?,git,git-remote,git-fetch,Git,Git Remote,Git Fetch,git-remote-update是否等同于git-fetch?是和否。git-remote-update从所有远程获取,而不仅仅是一个远程获取 不必查看代码来查看远程更新是否只是一个shell脚本(可能),它基本上会为每个远程运行fetchgit fetch可以更精细。更新:更多信息 我从一开始就应该这样做:我在Git的Git repo(太好了!) 然后我做了一个less搜索--all,这是我在下面找到的: git fetchlearn--all和--多个选项,用于从多个存储库运行fetch,

git-remote-update
是否等同于
git-fetch

是和否。
git-remote-update
从所有远程获取,而不仅仅是一个远程获取


不必查看代码来查看
远程更新
是否只是一个shell脚本(可能),它基本上会为每个远程运行fetch<代码>git fetch可以更精细。

更新:更多信息

我从一开始就应该这样做:我在Git的Git repo(太好了!)

然后我做了一个
less
搜索
--all
,这是我在下面找到的:

git fetch
learn
--all
--多个
选项,用于从多个存储库运行fetch,以及
--prune
选项,用于删除过时的远程跟踪分支。这使得
git远程更新
git远程修剪
的必要性降低(但没有计划删除
远程更新
远程修剪

1.6.6版直到2009年12月6日才发布,最初的海报问了他的问题

因此,正如您从发行说明中看到的,Git的作者知道,
Git remote update
命令功能在某种程度上被
Git fetch
复制,但他们决定不删除它,可能是为了与现有脚本和程序向后兼容,或者可能是因为工作太多,而且有更高优先级的项目


包含更多细节的原始答案

现在已经有3.5年的历史了,从那以后Git已经经历了几个版本(在撰写本文时,它已经从v1.8.3.2版升级到了v1.8.3.2版),看看当前的和文档,看起来它们都可以执行从多个远程获取新提交的基本相同功能,提供正确的选项和参数

获取所有遥控器 获取多个遥控器的一种方法是使用
--all
标志:

git fetch --all
这将从您配置的所有远程设备获取,假设您没有为它们设置
remote..skipFetchAll

如果为true,则在使用或的update子命令进行更新时,默认情况下将跳过此远程。-

这相当于使用

git remote update
不指定任何要提取的远程组,也没有在repo配置中设置
remotes.default
,也没有将任何远程组的
remote..skipDefaultUpdate
设置为true

没有提到remotes.default设置,但我咨询了万能的Google,并从以下网站找到了这一有用的解释:

您可以定义要通过
远程更新
命令获取的默认远程列表。这些可以远离您的队友、开源项目的可信社区成员或类似的人

因此,假设您设置了
remotes.default
,并且没有列出所有的远程设备,那么
git remote update
将不会获取您的repo“知道”的所有远程设备

关于
remote..skipDefaultUpdate
设置,请解释如下:

如果为true,则在使用或的update子命令进行更新时,默认情况下将跳过此远程

获取指定的远程组
fetch
remote update
都允许您指定要获取的多个远程设备和远程设备组,而不是获取所有远程设备:

git fetch [<options>] <group>
git fetch --multiple [<options>] [(<repository> | <group>)…]
git fetch--multiple
允许您指定多个存储库和存储库组,以便一次从中获取:

允许指定多个
参数。不能指定
s

git远程更新文档中的歧义

指定命令语法如下所示:

git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)…]
这可能是您也可以使用的情况

git remote update <remote>
git远程更新
做同样的事情,但正如我在上一节中提到的那样,
git remote update
的文档不清楚是否可以使用命令获取除单个远程组以外的任何内容

拉普 正如我所解释的,
git-fetch
git-remote-update
在从多个远程设备获取数据方面的行为类似。它们共享相似的语法和参数,尽管git fetch更短,所以人们可能会发现它更容易键入和使用

可能的情况是,
git remote update
不能像
git fetch
那样仅用于获取一个远程设备,但正如我所指出的,文档并没有明确说明这一点

旁白

上面的
Git fetch
Git remote update
举例说明,Git命令之间的功能重复不是唯一的。我注意到了和的类似情况,两者都可以进行一系列提交,以修补到新的基本提交

我猜随着Git多年来的发展,一些功能(不可避免地)被复制,也许有时是为了方便最终用户(例如,将一个范围传递给
cherry pick
,比反复传递一个提交来选择一个范围更简单)。显然,
cherry pick
并不总是接受一系列提交,如下所述:

git cherry pick
学会了选择一系列提交(例如
cherry pick a..B
cherry pick--stdin
),git revert也学会了这一点;但是,它们不支持更好的排序控制
rebase[-i]
has


您可以在运行
git remote update
时配置要获取的远程设备,请参阅git remote手册页。顺便说一句,
git remote
不是shell脚本,但它会生成

$ git config remotes.mygroup 'remote1 remote2 ...'
$ git fetch mygroup
git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)…]
git fetch <remote>
git remote update <remote>