Eu usei fetchseguido 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 -bsinalizador. 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 fetche 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 fetchpode ter sido copiada literalmente pull. Em particular, a seção <refspec>em opções é a mesma. No entanto, eu não acredito que fetchisso 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.