Acabei de descobrir e usar FETCH_HEAD
. Eu queria uma cópia local de algum software de um servidor e fiz
git fetch gitserver release_1
gitserver
é o nome da minha máquina que armazena repositórios git.
release_1
é uma tag para uma versão do software. Para minha surpresa, não release_1
havia nenhum lugar na minha máquina local. Eu tive que digitar
git tag release_1 FETCH_HEAD
para concluir a cópia da cadeia de confirmações marcadas (release_1) do repositório remoto para o local. A busca encontrou a tag remota, copiou a confirmação na minha máquina local, não criou uma tag local, mas definiu FETCH_HEAD
o valor da confirmação, para que eu pudesse encontrá-la e usá-la. Depois, FETCH_HEAD
criei uma marca local que correspondia à marca no controle remoto. Essa é uma ilustração prática do que FETCH_HEAD
é e como ele pode ser usado, e pode ser útil para alguém se perguntar por que o git fetch não faz o que você esperaria ingenuamente.
Na minha opinião, é melhor evitar isso para esse fim, e a melhor maneira de conseguir o que eu estava tentando fazer é
git fetch gitserver release_1:release_1
ou seja, buscar release_1 e chamá-lo release_1 localmente. (É fonte: dest, consulte https://git-scm.com/book/en/v2/Git-Internals-The-Refspec ; apenas no caso de você desejar atribuir um nome diferente!)
Você pode querer usar FETCH_HEAD
algumas vezes: -
git fetch gitserver bugfix1234
git cherry-pick FETCH_HEAD
pode ser uma boa maneira de usar a correção de bug número 1234 do seu servidor Git e deixar a coleta de lixo do Git para descartar a cópia do servidor depois que a correção for selecionada em sua ramificação atual. (Estou supondo que exista um commit limpo e marcado, contendo toda a correção de bugs no servidor!)
git fetch origin master
será atualizadoorigin/master
, não apenasFETCH_HEAD
. Veja stackoverflow.com/a/20967347/6309