xen*_*ide 141
是的,不是.git remote update从所有遥控器中取出,而不仅仅是一个.
在没有查看代码以查看是否remote update只是一个shell脚本(可能)的情况下,它基本上为每个远程运行fetch.git fetch可以更精细.
小智 102
更新:更多信息!
我应该从一开始就这样做:我在Git的Git仓库中gre发布了Git发行说明(所以meta!)
grep --color=always -R -C30 fetch Documentation/RelNotes/* | less
Run Code Online (Sandbox Code Playgroud)
然后我进行了less搜索--all,这是我在Git 1.6.6版的发行说明中找到的:
git fetch学习--all和--multiple选项,从许多存储库运行提取,以及--prune删除过时的远程跟踪分支的选项.这些使得git remote update和git remote prune更少的必要(有没有计划除去remote update也不remote prune,虽然).
版本1.6.6直到2009年12月23日才发布,原始海报于2009年12月6日提出了他的问题.
正如您从发行说明中看到的那样,Git的作者意识到git remote update命令功能在某种程度上被重复git fetch,但是他们决定不删除它,可能是为了与现有脚本和程序向后兼容,或者因为这只是太多的工作而且有更高优先级的项目.
原始答案更详细
xenoterracide的答案,现在为3.5岁,从那以后,Git有过好几个版本了(它已经从去v1.6.5.5到v1.8.3.2写这篇文章的),并期待在当前的文档git remote update和git fetch,它看起来就像他们都可以执行基本相同的功能,从多个遥控器获取新的提交,给定正确的选项和参数.
获取多个遥控器的一种方法是使用--all标志:
git fetch --all
Run Code Online (Sandbox Code Playgroud)
这将从您配置的所有遥控器中获取,假设您没有remote.<name>.skipFetchAll为它们设置:
如果为true,则在使用git-fetch(1)或git-remote(1)的update子命令进行更新时,默认情况下将跳过此远程.- git-config文档
这相当于使用
git remote update
Run Code Online (Sandbox Code Playgroud)
没有指定要获取的任何远程组,也没有remotes.default在repo配置中设置,也没有设置任何遥控器remote.<name>.skipDefaultUpdate设置为true.
在当前的1.8.3.2文档Git的配置中没有提及remotes.default的设置,但我咨询全能谷歌一下,发现从这个有用的解释MislavMarohnić:
$ git config remotes.default 'origin mislav staging'
$ git remote update
# fetches remotes "origin", "mislav", and "staging"
Run Code Online (Sandbox Code Playgroud)
您可以定义
remote update命令要提取的默认远程列表.这些可以是您的团队成员,开源项目的可信社区成员或类似人员的遥控器.
因此,假设您已remotes.default设置,而不是所有的遥控器都列在其中,那么git remote update将无法获取您的回购"意识到"的所有遥控器.
至于remote.<name>.skipDefaultUpdate设置,Git文档如此解释:
如果为true,则在使用git-fetch(1)或git-remote(1)的update子命令进行更新时,默认情况下将跳过此远程.
而不是获取所有遥控器,fetch并remote update允许您指定多个遥控器和遥控器组来获取:
git fetch [<options>] <group>
git fetch --multiple [<options>] [(<repository> | <group>)…]
Run Code Online (Sandbox Code Playgroud)
git fetch [<options>] <group>允许您获取属于组的多个遥控器(从Mislav借用另一个示例):
$ git config remotes.mygroup 'remote1 remote2 ...'
$ git fetch mygroup
Run Code Online (Sandbox Code Playgroud)
git fetch --multiple允许您指定多个存储库和存储库组,以便一次性获取(从文档中):
允许指定几个
<repository>和<group>参数.不可以<refspec>s指定.
git remote update文档中含糊不清
所述用于概要git remote update指定该命令的语法如下:
git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)…]
Run Code Online (Sandbox Code Playgroud)
注意最后一部分,[(<group> | <remote>)…]?尾随点...意味着你可以用命令指定多个组和遥控器,这意味着它的行为方式与git fetch --multiple... 一样,看看两者之间的语法是如此相似?
但是,在同一文档中,对update命令的解释没有说明指定多个组和远程参数,只说明它
根据定义获取存储库中命名的一组遥控器的[es]更新
remotes.<group>.
所以目前还不清楚是否git remote update与git fetch --multiple指定多个单独的遥控器和多个远程组相同.
最后,每个人都知道获取单个遥控器的简单情况:
git fetch <remote>
Run Code Online (Sandbox Code Playgroud)
可能是您也可以使用的情况
git remote update <remote>
Run Code Online (Sandbox Code Playgroud)
做同样的事情,但正如我在上一节中所提到的,文档中git remote update不清楚是否可以使用该命令获取除一组遥控器之外的任何东西.
正如我所解释的,git fetch并且git remote update对于从多个遥控器获取同样的行为.它们共享类似的语法和参数,但是git fetch更短,所以人们可能会发现它更容易键入和使用.
可能是这样的情况,git remote update不能用于获取像这样的单个遥控器git fetch,但正如我已经指出的那样,文档并没有说明这一点.
在旁边
Git瓷器命令之间的功能重复,例如git fetch及git remote update以上,并不是唯一的.我已经注意到了类似的情况git rebase --onto,并git cherry-pick在既可以采取一系列的提交补丁到一个新的基地提交.
我想,随着Git多年来的发展,一些功能(不可避免地?)重复,有时可能为最终用户提供便利(例如,传递范围更简单cherry-pick,而不是一遍又一遍地传递一个提交)选择范围).显然cherry-pick并不总是接受一系列提交,如v1.7.2发行说明中所述:
git cherry-pick学会了选择一系列提交(例如cherry-pick A..B和cherry-pick --stdin),也是如此git revert; 但是,这些不支持更好的测序控制rebase [-i].
| 归档时间: |
|
| 查看次数: |
77261 次 |
| 最近记录: |