Puede obtener cualquier referencia de cualquier control remoto (siempre que el servidor esté dispuesto a dársela). La clave para obtener refs fuera del refs/heads/
es proporcionar rutas de referencia completas que comiencen con refs/
. Si lo desea, puede incluso extraer de repositorios que no están configurados como controles remotos (git fetch puede tomar una URL en lugar de un nombre remoto).
De forma predeterminada, las configuraciones remotas configuradas solo se recuperarán del espacio de nombres refs/heads/
del repositorio remoto, por lo que no recogerán nada dentro de refs/remotes/
. Pero, podría referirse a una referencia dentro de ella utilizando una referencia completa como refs/remotes/trunk
(remotes/trunk
también podría funcionar, pero también podría ser ambiguo).
Si el refspec obtenido no especifica una referencia de destino, se almacenará en la referencia FETCH_HEAD especial.
Fetch de refs/remote/trunk
en FETCH_HEAD y comprobar que funciona como una cabeza separada de un repositorio:
git fetch remote-name-or-url refs/remotes/trunk &&
git checkout FETCH_HEAD
mismo, pero crear una, rama local llamado en lugar de utilizar una cabeza separada:
git fetch remote-name-or-url refs/remotes/trunk &&
git checkout -b trunk-from-remote FETCH_HEAD
Lo mismo, pero directamente en una sucursal local:
git fetch remote-name-or-url refs/remotes/trunk:trunk-from-remote &&
git checkout trunk-from-remote
Si está trabajando con un control remoto configurado, puede volver a escribir su configuración remote.<remote-name>.fetch
y agregar una entrada adicional para automatizar la búsqueda de refs/heads/
y .
# fetch branchs of remote into remote-name/heads/*
git config remote.remote-name.fetch '+refs/heads/*:refs/remotes/remote-name/heads/*' &&
# fetch remotes of remote into remote-name/remotes/*
git config --add remote.remote-name.fetch '+refs/remotes/*:refs/remotes/remote-name/remotes/*'
para evitar posibles colisiones, el ejemplo anterior configura FETCH para almacenar refs en espacios de nombres disjuntos (…/heads/
y …/remotes/
). Puede elegir diferentes nombres si lo desea. Si está seguro de que no habrá conflictos, incluso puede rellenarlos directamente bajo refs/remotes/remote-name/
.
Las respuestas de Jefromi y Chris deberían ser suficientes. Acabo de agregar como referencia la interesante pregunta SO http://stackoverflow.com/questions/1070496/having-a-hard-time-understanding-git-fetch. – VonC