Git Fetch com caminho em vez de remoto
-
26-09-2019 - |
Pergunta
Eu entendo a ideia de correr git fetch <remote>
, porque os galhos remotos estão então disponíveis com git checkout <remote>/<branch>
.
Mas como funciona se eu apenas correr
git fetch path/to/other/repo
Como posso verificar as filiais correspondentes? Observe que a operação funciona silenciosamente (mesmo com --verbose
), e que nenhuma nova filial é criada.
editar: Só para deixar claro: eu entendo perfeitamente como o Git funciona com controles remotos. Estou apenas curioso sobre esta sintaxe alternativa git fetch path/to/remote
, ou git fetch <url>
. Como deve funcionar? Por que não cria novas ramificações? Por que é executado silenciosamente mesmo no modo detalhado? Qual é o uso pretendido?
Solução 2
Eu acho que a melhor explicação (muito melhor do que os documentos) é um Responda a outra pergunta por Jakub Narębski.
Basicamente:
git fetch <path>
Apenas busque o HEAD
ramo do controle remoto e o armazena localmente em FETCH_HEAD
.
git fetch <path> <branch>
busca o ramo no repo remoto e o armazena em FETCH_HEAD
.
Os usos mais avançados são descritos na resposta de Jakub Narębski, mas, como ele se afirma, a melhor maneira de buscar é usar controles remotos nomeados.
Outras dicas
Mesmo que seja "local" em termos de sistema de arquivos, outro repositório é um repositório remoto.
Se você quiser usá -lo, adicione -o como um repositório remoto primeiro (mesmo que o URL seja local):
git remote add <name> <url>
Em seguida, prossiga com git fetch
(e outros comandos) da mesma maneira que no repositório em máquinas remotas.
EDITAR: Se você fizer um simples git fetch
De um caminho local, cria um novo pseudo-ralo chamado FETCH_HEAD
. Você pode conferir em uma nova filial, por exemplo, usando:
git checkout -b new_branch FETCH_HEAD
Você tem que passar explicitamente um refspec
para git fetch
Para obter os ramos remotos. git help fetch
deve ajudar.