He creado un repositorio git para reflejar un sitio en vivo (que es un repositorio git no desnudo):
git clone --mirror ssh://[email protected]/path/to/repo
Ahora, para mantener este clon espejo actualizado con todos los cambios de su origen remoto, ¿qué comando o comandos debo usar?
Me gustaría mantener todo actualizado: commits, refs, hooks, branches, etc.
¡Gracias!
En cuanto a commits, refs, ramas y "etcétera", la respuesta de Magnus simplemente funciona (git remote update
).
Pero desafortunadamente no hay manera de clonar
/ reflejar / actualizar
los hooks, como yo quería...
He encontrado este hilo muy interesante sobre clonar / reflejar los ganchos:
http://kerneltrap.org/mailarchive/git/2007/8/28/256180/thread
He aprendido:
Los ganchos no se consideran parte del contenido del repositorio.
Hay más datos, como la carpeta .git/description
, que no se clona, al igual que los hooks.
Los hooks por defecto que aparecen en el directorio hooks
provienen del directorio TEMPLATE_DIR
.
Existe esta interesante característica template
en git.
Por lo tanto, puedo ignorar este "clonar los ganchos cosa", o ir a por una estrategia rsync
, dados los propósitos de mi espejo (copia de seguridad + fuente para otros clones, solamente).
Bueno... Me olvidaré de la clonación de hooks, y seguiré con la actualización remota de git
.
clone
/ update
, sino también los stashes, rerere, etc... Así que, para una copia de seguridad estricta, rsync
o equivalente sería realmente el camino a seguir. Como esto no es realmente necesario en mi caso (puedo permitirme no tener hooks, stashes, etc.), como he dicho, me quedaré con el remote update
.Gracias. Mejorado un poco mi propio "git-fu"... :-)
Consulte aquí: https://stackoverflow.com/questions/5563349/git-doesnt-clone-all-branches-on-subsequent-clones/5563660#5563660
Si realmente quieres esto tirando de ramas en lugar de push --mirror
, puedes echar un vistazo aquí:
Esta respuesta proporciona pasos detallados sobre cómo lograr que con relativa facilidad: