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?
É 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
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:
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
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.
Respostas:
Provavelmente:
fonte
Isso deve funcionar para todos os repositórios padrão:
Se sua ramificação padrão for diferente de
master
, será necessário especificar o nome da ramificação:fonte
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
primeiro fará uma busca e depois mesclará na ramificação rastreada
fonte
git fetch
método, também desejará buscar tagsgit fetch -t
. Se você estiver satisfeito com as alterações (git log HEAD..FETCH_HEAD
), poderá mesclá-lasgit merge FETCH_HEAD
.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
master
filial.Se você não fez nenhuma alteração localmente, pode usar
git pull
para desativar quaisquer novas confirmações e adicioná-las à suamaster
.Se você fez alterações e deseja evitar adicionar uma nova confirmação de mesclagem, use
git pull --rebase
.git pull --rebase
funcionará mesmo que você não tenha feito alterações e provavelmente seja sua melhor opção.fonte
Com um mestre de origem já definido, basta usar o comando abaixo -
fonte