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?

Rachel
fonte
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".

Jakob Borg
fonte
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.

Dhruvil Shah
fonte
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

user33276346
fonte