Diferenças entre git pull origin master e git pull origin master


283

Qual é a diferença entre git pull origin mastere git pull origin/master?


1
O calmah já o cobriu, mas a resposta não é que você nunca deveria fazer isso git pull origin/master. Se você deseja mesclar a ramificação remota [armazenada localmente] origin/master, basta usar git merge origin/master.
Cascabel

3
@Jefromi: Você pode explicar por que é sempre melhor fazer git merge do que git pull?
Rachel

16
git pullsignifica git fetchseguido por git merge. Ele busca o conteúdo do controle remoto e o funde na sua ramificação atual. Mas origin/masteré uma filial local (rastreando uma filial remota). Se você deseja mesclá-lo, não precisa buscar nada. É enganador dizer git pull origin/masterquando você não está realmente buscando em um controle remoto.
Cascabel

Obrigado Jefromi pelas informações úteis. Realmente ajuda a entender muito facilmente o conceito não tão fácil.
Rachel

Para quem está lendo isso e ainda confuso, origin/masteré um ramo armazenado localmente que armazena em cache o ramo mestre no controle remoto de origem.
Iheanyi

Respostas:


354

git pull origin masterpuxará as alterações do origincontrole remoto, masterfilial e as mesclará para a filial local com check-out.

git pull origin/masterpuxará as alterações da ramificação armazenada localmente origin/mastere as mesclará à ramificação com check-out local. A origin/masterramificação é essencialmente uma "cópia em cache" do que foi extraído pela última vez origin, e é por isso que é chamada de ramificação remota na linguagem git. Isso pode ser um pouco confuso.

Você pode ver com quais ramificações estão disponíveis git branche git branch -rpara ver as "ramificações remotas".


1
no caso git pull origin master, ele sempre será mesclado ao ramo principal, digamos que estou em outro ramo no meu repo e depois estou executando o comando acima, ele atualizará meu ramo atual com as alterações remotas de origem ou meu ramo mestre com as alterações?
Rachel

4
@calmh: git merge(e, portanto git pull) sempre se funde no ramo atual. Para mesclar com algo que não seja sua filial atual, verifique primeiro.
Cascabel

2
hum .. Eu não vejo como 'origem / mestre' é diferente de 'origem mestre'; ambos são o ramo principal na origem. Você pode realmente dar um exemplo de quando eles seriam diferentes?
hasen

69
git pull origin/masterpode ter sido um comando válido quando isso foi escrito, mas hoje em dia (git 1.7.10.3) falha com fatal: 'origin/master' does not appear to be a git repository(como deveria - pull é sempre para puxar de controles remotos).
user1338062

3
Por que o git é tão confuso? Então, temos 4 repositórios totalmente, correto? Existe um (1) repositório remoto, (2) um repositório local, (3) um repositório de teste, (4) um remoto / local aka origem / mestre? Por que o git teria o repositório # 4?
Mugen

3

git pull origin masterbuscará todas as alterações da ramificação principal do controle remoto e as mesclará com o seu local. Geralmente não usamos git pull origin / master. Podemos fazer o mesmo git merge origin/master. Ele mesclará todas as alterações de "cópia em cache" ramo principal da origem em seu ramo local. No meu caso, git pull origin/masterestá lançando o erro.


1

git pull= git fetch+git merge origin/branch

git pulle git pull origin branchdiferem apenas no fato de que o último "atualizará" a origem / ramificação e nem toda a origem / *, como git pullfaz.

git pull origin/branchsimplesmente não funcionará porque está tentando fazer um git fetch origin/branchinválido.

Pergunta relacionada: git fetch + git merge origin / master vs git pull origin / master

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.