Respostas:
UPDATE: mais informações!
Eu deveria ter feito isso desde o início: eu cumprimentei as notas de lançamento do Git no repositório Git do Git (então meta!)
grep --color=always -R -C30 fetch Documentation/RelNotes/* | less
Depois fiz uma lesspesquisa --alle foi o que encontrei nas notas de lançamento do Git versão 1.6.6 :
git fetchaprendidas--alle--multipleopções, para executar a busca em muitos repositórios e--pruneopção para remover ramificações de rastreamento remoto que ficaram obsoletas. Estes tornamgit remote updateegit remote prunemenos necessários (não há nenhum plano para removerremote updatenemremote prune, no entanto).
A versão 1.6.6 não foi lançada até 23 de dezembro de 2009 , e o Pôster original fez sua pergunta em 6 de dezembro de 2009.
Portanto, como você pode ver nas notas de versão, os autores do Git estavam cientes do fato de que a git remote updatefuncionalidade do comando estava sendo duplicada git fetch, mas eles decidiram não removê-la, talvez por compatibilidade com scripts e programas existentes, ou talvez porque é muito trabalho e há itens de prioridade mais alta.
Resposta original com mais detalhes
A resposta do xenoterracide já tem 3,5 anos e o Git passou por várias versões desde então (passou da v1.6.5.5 para a v1.8.3.2 até o momento em que este artigo foi escrito), e olhando a documentação atual para git remote updatee git fetch, parece como se ambos pudessem executar basicamente a mesma função de buscar novas confirmações de vários controles remotos , dadas as opções e argumentos corretos.
Uma maneira de buscar vários controles remotos é com o --allsinalizador:
git fetch --all
Isso será buscado em todos os controles remotos configurados, supondo que você não tenha remote.<name>.skipFetchAlldefinido para eles:
Se verdadeiro, este controle remoto será ignorado por padrão ao atualizar usando git-fetch (1) ou o subcomando update de git-remote (1) . - documentação do git-config
Isso seria equivalente a usar
git remote update
sem especificar nenhum grupo remoto a ser buscado, e também sem ter remotes.defaultdefinido na configuração de repo, e também que nenhum de seus controles remotos foi remote.<name>.skipDefaultUpdatedefinido como true.
A documentação 1.8.3.2 atual para a configuração do Git não menciona a remotes.defaultconfiguração, mas consultei o Todo Poderoso Google sobre isso e encontrei esta explicação útil de Mislav Marohnić :
$ git config remotes.default 'origin mislav staging'
$ git remote update
# fetches remotes "origin", "mislav", and "staging"
Você pode definir uma lista padrão de controles remotos a serem buscados pelo
remote updatecomando. Estes podem ser controles remotos de seus colegas de equipe, membros confiáveis da comunidade de um projeto de código-fonte aberto ou similares.
Portanto, presumivelmente, se você remotes.defaultconfigurou e nem todos os seus controles remotos estão listados nele, git remote updatenão buscará todos os controles remotos dos quais seu repo está "ciente".
Quanto à remote.<name>.skipDefaultUpdateconfiguração, os documentos do Git explicam assim:
Se verdadeiro, este controle remoto será ignorado por padrão ao atualizar usando git-fetch (1) ou o subcomando update de git-remote (1) .
Em vez de buscar todos os controles remotos, ambos fetche remote updatepermitir que você especifique vários controles remotos e grupos de controles remotos a serem buscados:
git fetch [<options>] <group>
git fetch --multiple [<options>] [(<repository> | <group>)…]
git fetch [<options>] <group>permite buscar vários controles remotos que fazem parte de um grupo (para emprestar outro exemplo do Mislav ):
$ git config remotes.mygroup 'remote1 remote2 ...'
$ git fetch mygroup
git fetch --multiplepermite especificar vários repositórios e grupos de repositórios para buscar de uma só vez ( nos documentos ):
Permitir que vários
<repository>e<group>argumentos sejam especificados. Não<refspec>spode ser especificado.
Ambiguidade na git remote updatedocumentação
A sinopse paragit remote update especifica que a sintaxe do comando é a seguinte:
git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)…]
Observe a última parte [(<group> | <remote>)…]? Os pontos finais ...indicam que você pode especificar vários grupos e controles remotos com o comando, o que significa que ele se comporta da mesma maneira que git fetch --multiple... veja como a sintaxe entre os dois é tão semelhante?
No entanto, no mesmo documento, a explicação para o updatecomando não diz nada sobre a especificação de vários argumentos remotos e de grupo, apenas que
Busque [es] atualizações para um conjunto nomeado de controles remotos no repositório, conforme definido por
remotes.<group>.
Portanto, não está claro se git remote updatefunciona de forma idêntica no que git fetch --multiplediz respeito à especificação de vários controles remotos individuais e vários grupos remotos.
Finalmente, todo mundo conhece o caso simples de buscar um único controle remoto:
git fetch <remote>
Pode ser que você também possa usar
git remote update <remote>
para fazer a mesma coisa, mas como mencionei na seção anterior, a documentação para git remote updatenão está clara sobre se é possível buscar algo diferente de um único grupo de controles remotos com o comando
Como expliquei, git fetche git remote updatese comporta de maneira semelhante em relação à busca de vários controles remotos. Eles compartilham sintaxe e argumentos semelhantes, embora git fetchsejam mais curtos, portanto as pessoas provavelmente acham mais fácil digitar e usar.
Pode ser o caso que git remote updatenão pode ser usado para buscar apenas um único controle remoto git fetch, mas, como apontei, a documentação não deixa isso claro.
a parte, de lado
A duplicação na funcionalidade entre os comandos de porcelana Git, exemplificada por git fetche git remote updateacima, não é exclusiva. Eu notei uma situação semelhante com git rebase --ontoe git cherry-pick, em que ambos podem levar uma série de confirmações para corrigir uma nova confirmação básica.
Eu acho que, à medida que o Git evoluiu ao longo dos anos, algumas funcionalidades foram (inevitavelmente?) Duplicadas, talvez às vezes como uma conveniência para os usuários finais (por exemplo, é mais fácil passar um intervalo para cherry-pick, do que passar um único commit repetidamente) para escolher um intervalo). Aparentemente cherry-pick, nem sempre aceitamos uma série de confirmações, conforme explicado nas notas de versão v1.7.2 :
git cherry-pickaprendeu a escolher uma variedade de confirmações (por exemplo,cherry-pick A..Becherry-pick --stdin), o mesmo fezgit revert; eles não oferecem suporte ao controle de seqüenciamento mais agradávelrebase [-i].
Sim e não. git remote updatebusca de todos os controles remotos, não apenas um.
Sem olhar o código para ver se remote updateé apenas um script de shell (possível), basicamente, é executado a busca para cada controle remoto. git fetchpode ser muito mais granular.
git remote update, consulte a página de manual do git-remote.
git remotenão é um script de shell, mas gera git fetchdurante a remote update.
git fetchopção de comando equivalente para a git remote update?
git fetch --all
git rebaseé comomvegit cherry-pické comocp. O--ontointerruptor não muda isso. Você pode obter um efeito de cópiagit rebaseapenas se especificar valores SHA1, caso contrário, sua ramificação será movida!