Como "puxar" de uma filial local para outra?

231

Parece tão simples, mas eu simplesmente não consigo entender. Eu fiz um ramo experimental há um tempo atrás e agora gostaria de obter todas as alterações que aconteceram no master desde que o fiz. Tudo isso é local. Quero passar do mestre local para o my_branch local, mas não consigo. Isso não parece funcionar, me dizendo que o mestre não é um repositório git:

git pull master
Phil Kulak
fonte
Veja também stackoverflow.com/questions/3124601/…
Michael Freidgeim 5/17

Respostas:

339

você precisa dizer ao git de onde extrair, neste caso, do diretório / repositório atual:

git pull . master

mas, ao trabalhar localmente, você geralmente chama apenas mesclagem (pull internamente chama mesclagem):

git merge master
knittl
fonte
1
Gosto git pull . masterporque acho que ele verificará se há algo novo também de origem. Isso é verdade?
Josiah Yoder
1
@ JosiahYoder no, pull .especificamente diz ao Git para extrair do repositório localizado em .(ou seja, o diretório / repositório atual). originé apenas uma abreviação para "qualquer local repositório definido no .git/configarquivo (normalmente configurados automaticamente ao clonar um repositório)
knittl
1
Oh! Então git pull . master, puxaria do repositório local em vez da origem? (Nenhuma busca na origem !?) Existe alguma vantagem nesse git pull . masterperíodo git merge master?
Josiah Yoder
2
@ JosiahYoder: Sim, exatamente, seria "extraído" do repositório local, em vez do repositório de origem. Nenhuma busca é feita (porque tudo do repositório local já está aqui!). Não há vantagem - os dois comandos fazem mais ou menos o mesmo. Se você estiver avançando rapidamente, poderá usar push . origin/branch:branch(não puxar) para atualizar as ramificações locais, sem verificar primeiro.
knittl
Eu te louvo. Pelo poder de Greyskull!
precisa saber é o seguinte
45

O que você está procurando é mesclar.

git merge master

Com pullvocê, busque as alterações em um repositório remoto e as mescle na ramificação atual.

KingCrunch
fonte
38

Post bastante antigo, mas pode ajudar alguém novo no git.

Eu irei com

git rebase master
  • histórico de log muito mais limpo e nenhuma consolidação de mesclagem (se feita corretamente)
  • precisa lidar com conflitos, mas não é tão difícil.
Lukino
fonte
1
certamente existem muitas maneiras de uma equipe de desenvolvimento gerenciar seus processos de ramificação. Pessoalmente, uso o git há 8 anos e nunca tive que me recuperar. Eu sempre uso a mesclagem e sempre atendeu às minhas necessidades. Certamente com o rebase, assim como a mesclagem, podem surgir cenários em que o git não pode decidir automaticamente o resultado correto da "mesclagem" de dois conjuntos de mudanças. Em relação ao argumento que você fez sobre um histórico de confirmação "mais limpo". Pessoalmente, minha preferência é manter todo o histórico de confirmação, caso eu precise fazer alguma "arqueologia de confirmação" (como acontece com frequência!)
user3441604
-1

Se você estiver procurando por uma nova atração de outro ramo, como do local para dominar, você pode seguir isso.

git commit -m "Initial Commit"
git add .
git pull --rebase git_url
git push origin master
theRana
fonte