Eu usei fetch
seguido por checkout
...
git fetch <remote> <rbranch>:<lbranch>
git checkout <lbranch>
... onde <rbranch>
está a filial remota ou referência de origem e <lbranch>
é a filial local ou referência de destino ainda inexistente que você deseja rastrear e que provavelmente deseja nomear o mesmo nome que filial remota ou referência de origem. Isso é explicado em opções na explicação de .<refspec>
O Git é tão inteligente que conclui automaticamente o primeiro comando se eu tabular após as primeiras letras da ramificação remota. Ou seja, nem preciso nomear o ramo local, o Git copia automaticamente o nome do ramo remoto para mim. Obrigado Git!
Além disso, como mostra a resposta nesta postagem similar do Stack Overflow , se você não nomear a ramificação local fetch
, ainda poderá criá-la quando fizer check-out usando o -b
sinalizador. Ou seja, git fetch <remote> <branch>
seguido por git checkout -b <branch> <remote>/<branch>
faz exatamente o mesmo que a minha resposta inicial. E, evidentemente, se o seu repositório tiver apenas um controle remoto, você poderá fazer isso git checkout <branch>
depois fetch
e ele criará uma ramificação local para você. Por exemplo, você acabou de clonar um repositório e deseja verificar ramificações adicionais no controle remoto.
Acredito que parte da documentação do fetch
pode ter sido copiada literalmente pull
. Em particular, a seção <refspec>
em opções é a mesma. No entanto, eu não acredito que fetch
isso nunca merge
, portanto, se você deixar o lado do cólon de destino vazio, fetch
não deverá fazer nada .
NOTA: git fetch <remote> <refspec>
é uma abreviação git fetch <remote> <refspec>:
que, portanto, não faria nada, mas git fetch <remote> <tag>
é a mesma git fetch <remote> <tag>:<tag>
que deve copiar o controle remoto <tag>
localmente.
Eu acho que isso só é útil se você deseja copiar uma filial remota localmente, mas não necessariamente verificá-la imediatamente. Caso contrário, agora eu usaria a resposta aceita , que é explicada em detalhes na primeira seção da descrição do checkout e mais tarde na seção de opções na explicação de --track
, uma vez que é uma linha única. Bem ... uma espécie de one-liner, porque você ainda teria que correr git fetch <remote>
primeiro.
FYI: A ordem do <refspecs>
(origem: destino) explica o bizarro método anterior ao Git 1.7 para excluir ramificações remotas . Ou seja, não introduza nada no refspec de destino.