Atualizando um repositório local com alterações de um repositório GitHub

567

Eu tenho um projeto verificado localmente no GitHub, e esse repositório remoto desde então teve alterações feitas nele. Qual é o comando correto para atualizar minha cópia local com as alterações mais recentes?

Tom
fonte
26
É importante notar que o github produziu um conjunto de guias muito informativos e úteis para o uso do git e github. Eu os achei inestimáveis ​​quando fiz a mudança para o git. help.github.com
Mark Embling

Respostas:

791

Provavelmente:

git pull origin master
James Healy
fonte
28
Ele reclamou: "Você pediu para extrair da 'origem' remota, mas não especificou uma ramificação. Como esse não é o controle remoto padrão configurado para sua ramificação atual, você deve especificar uma ramificação na linha de comando." Então eu tentei o "$ git pull origin master" e funcionou bem.
Juan Lanus
8
git pull origin master
Andrzej Rehmann /
1
Apaguei alguns arquivos e não os trouxe novamente, alguma ideia?
Poder de Aquário
1
fazemos um commit do git antes de executar isso? toda vez que executo esse comando, acabo com 18347213846 arquivos modificados que eu nem toquei !!!
Orkun Ozen
5
Acabei de aprender da maneira mais difícil que puxar uma nova ramificação de repositório remoto não cria uma ramificação com esse nome localmente, mas, em vez disso, puxa essa ramificação remota para qualquer ramificação local que for verificada. Não tenho certeza de como desfazer essa falta de descarte e clonar novamente o repositório. De qualquer forma, parece que a ramificação local é independente da ramificação remota e é preciso sempre garantir que você esteja na ramificação local pretendida antes de puxar.
9138 Joe Lapp
87

Isso deve funcionar para todos os repositórios padrão:

git pull origin master

Se sua ramificação padrão for diferente de master, será necessário especificar o nome da ramificação:

git pull origin my_default_branch_name
Andrzej Rehmann
fonte
2
Na verdade não. fatal: Não foi possível encontrar o ref master remoto
Victor Eijkhout
1
@Eijkhout probablt no seu caso repo não há branch master, e algum outro ramo é definida como padrão
Andrzej Rehmann
62
git fetch [remotename]

No entanto, você precisará mesclar as alterações em suas filiais locais. Se você estiver em uma filial que está rastreando uma filial remota no Github, então

git pull

primeiro fará uma busca e depois mesclará na ramificação rastreada

Gareth
fonte
5
Se você estiver usando o git fetchmétodo, também desejará buscar tags git fetch -t. Se você estiver satisfeito com as alterações ( git log HEAD..FETCH_HEAD), poderá mesclá-las git merge FETCH_HEAD.
Brad Grissom
16

Esta questão é muito geral e há algumas suposições que vou fazer para simplificá-la um pouco. Vamos supor que você deseja atualizar sua masterfilial.

Se você não fez nenhuma alteração localmente, pode usar git pullpara desativar quaisquer novas confirmações e adicioná-las à sua master.

git pull origin master

Se você fez alterações e deseja evitar adicionar uma nova confirmação de mesclagem, use git pull --rebase.

git pull --rebase origin master

git pull --rebase funcionará mesmo que você não tenha feito alterações e provavelmente seja sua melhor opção.

Mahavir Chhasatiya
fonte
1
Rebase e os perigos do rebase: atlassian.com/git/tutorials/rewriting-history/git-rebase . Os parágrafos 2 e 3 de "Entendendo os perigos do rebase" realmente me fazem perder o conjunto de comandos do SVN.
WillC
9

Com um mestre de origem já definido, basta usar o comando abaixo -

git pull "https://github.com/yourUserName/yourRepo.git"
Shailendra
fonte