Qual é a diferença entre 'git pull' e 'git fetch'?

Nota do Moderador: Dado que esta pergunta já teve sextenta e sete respostas postadas (algumas delas eliminadas), considere se está ou não a contribuir com algo novo*** antes de postar outra.

Quais são as diferenças entre o "git pull" e o "git fetch"?

Solução

Nos termos mais simples, "git pull" faz um "git fetch" seguido por uma "git merge".

Você pode fazer um git fetch a qualquer momento para atualizar seus ramos de rastreamento remoto em refs/remotes//.

Esta operação nunca muda nenhuma das suas filiais locais sob refs/heads', e é segura para fazer sem alterar a sua cópia de trabalho. Eu já ouvi falar de pessoas correndo ogit fetch` periodicamente em um cron job em segundo plano (embora eu não recomendaria fazer isso).

Um git pull é o que você faria para atualizar uma filial local com sua versão remota, ao mesmo tempo em que atualiza suas outras filiais de rastreamento remoto.

Git documentation - **git pull***:

No seu modo padrão, git pull é o diminutivo de git fetch seguido de git merge FETCH_HEAD.

Comentários (40)

Um caso de uso do git fetch é que o seguinte irá dizer-lhe quaisquer alterações no ramo remoto desde o seu último puxão... para que você possa verificar antes de fazer um puxão real, o que poderia alterar os arquivos no seu ramo atual e cópia de trabalho.

git fetch
git diff ...origin

Veja: https://git-scm.com/docs/git-diff sobre a sintaxe de pontos duplos e triplos no comando diff

Comentários (5)
git-pull - Buscar e fundir-se com outro repositório ou uma filial local
SINOPSE

git pull ... DESCRIÇÃO

Executa o git-fetch com os parâmetros dados, e chama o git-merge para fundir o recuperou a(s) cabeça(s) para o ramo actual. Com --base, chamadas git-rebase em vez de um git-merge.

Note que você pode usar o . (diretório atual) como o repositório para puxar do repositório local - isto é útil na fusão de filiais locais para o ramo actual.

Note também que as opções para o próprio git-pull e o git-merge subjacente deve ser dada antes das opções destinadas ao git-fetch.

Você puxaria se quisesse os históricos fundidos, você buscaria se apenas 'quisesse o codez', já que alguma pessoa tem etiquetado alguns artigos por aqui.

Comentários (3)