Qual é a diferença entre `git fetch origin` e` git remote update origin`?


115

Em resposta a uma pergunta sobre puxar um commit por vez de um repositório git , foi recomendado usar em git remote updatevez de git fetch. Eu li as duas páginas do manual, mas não posso dizer que entendi nenhuma das duas em sua totalidade.

Alguém pode me explicar como git fetch origine get remote update originse comportar de forma diferente?


Respostas:


133

Não faz diferença quando usado assim.

remote updateé um comando de alto nível - ele suporta remotos agrupados ( remotes.<group> = <list>) e atualiza todos os remotos (exceto aqueles com remote.<name>.skipDefaultUpdateset), mas não qualquer uma das opções mais específicas de busca. Por trás, porém, ele faz exatamente a mesma coisa que buscar com as opções padrão.

A resposta recomendando em remote updatevez de git fetch era, na verdade, recomendá-lo sem um nome remoto, apenas por uma questão de buscar tudo, não apenas aquele nomeado como um argumento. Isso é equivalente a git fetch --all.

Devo acrescentar a ressalva de que fetch e remote update não usavam o mesmo codepath até a v1.6.6.1 (lançado em 23 de dezembro de 2009). Mesmo antes disso, porém, eles faziam essencialmente a mesma coisa, apenas usando um código diferente (possivelmente se comportando de maneira um pouco diferente em casos extremos, mas não consigo pensar em nenhum de cabeça).


1
Muito interessante. +1. Se você olhar as notas de lançamento do Git (que eu compilei aqui: pastebin.com/LNhRhQS3 ), parece que apenas 1.7.0 (logo após 1.6.6.2) permite " git fetch --all" ser usado no lugar de " git remote update".
VonC

Ah, eu realmente não verifiquei quando fetch --allentrei. Eu faço tudo isso apenas por variações de git log --grep=...e git describe --containsno meu clone git.git.
Cascabel

Hm, bem, isso é estranho - commit 9c4a036b é "Ensine a opção --all para 'git fetch'" e git describe --contains dá v1.6.6.1~1^2~9. (Mesma versão da mudança de atualização remota que mencionei na minha resposta, atualizada para adicionar a versão de lançamento secundária lá). Talvez fosse tarde para entrar nas notas de lançamento?
Cascabel

@Jefromi: ótima maneira de extrair essas informações, mas eu prefiro olhar primeiro as notas de lançamento e fiquei frustrado com a falta de uma página para todas as notas de lançamento, daí meu pequeno copiar e colar no pastebin.
VonC

@Jefromi: certo ... agora eu tenho que encontrar uma maneira de agregar todo o "o que está acontecendo no Git" para ver por que o commit 9c4a036b não chegou ao lançamento oficial antes de 1.7;)
VonC
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.