Estoy usando git en un proyecto relativamente pequeño y encuentro que comprimir el contenido del directorio .git podría ser una buena manera de hacer una copia de seguridad del proyecto. Pero esto es un poco extraño porque, cuando restauro, lo primero que tengo que hacer es git reset --hard
.
¿Hay algún problema al hacer una copia de seguridad de un repositorio git de esta manera? Además, ¿hay alguna manera mejor de hacerlo (por ejemplo, un formato portátil de git o algo similar?)?
git bundle
Respuestas:
Comencé a piratear un poco el script de Yar y el resultado está en github, incluidas las páginas de manual y el script de instalación:
https://github.com/najamelan/git-backup
Instalación :
Acogiendo con beneplácito todas las sugerencias y solicitud de extracción en github.
fuente
sudo install.sh
, luego configúrelo (usa el sistema de configuración git) para establecer el directorio de destino (vea el archivo readme en github). Luego corresgit backup
dentro de tu repositorio. Como nota al margen, este fue un experimento con git bundle y una respuesta a esta pregunta, pero git bundle nunca hace una copia exacta absoluta (por ejemplo, si recuerdo bien, especialmente con respecto a los controles remotos git), así que personalmente realmente uso tar para hacer copias de seguridad. directorios git.La otra forma oficial sería usar git bundle
Eso creará un archivo que admita
git fetch
ygit pull
para actualizar su segundo repositorio.Útil para copia de seguridad incremental y restauración.
Pero si necesita hacer una copia de seguridad de todo (porque no tiene un segundo repositorio con algún contenido anterior ya en su lugar), la copia de seguridad es un poco más complicada de hacer, como se menciona en mi otra respuesta, después del comentario de Kent Fredric :
(Se trata de una operación atómica , en vez de hacer un archivo de la
.git
carpeta, como se ha comentado por fantabolous )Advertencia: no recomendaría la solución de Pat Notz , que es clonar el repositorio. Hacer copias de seguridad de muchos archivos siempre es más complicado que hacer una copia de seguridad o actualizar ... solo uno.
Si miras el historial de ediciones de la respuesta de OP Yar , verás que Yar usó al principio un ... con la edición:
clone --mirror
La solución actual de Yar utiliza
git bundle
.Yo descanso mi caso.
fuente
git bundle
. No es posible con un zip global del repositorio local.La forma en que hago esto es crear un repositorio remoto (desnudo) (en una unidad separada, llave USB, servidor de respaldo o incluso github) y luego usarlo
push --mirror
para hacer que ese repositorio remoto se vea exactamente como mi local (excepto que el remoto es un simple repositorio).Esto empujará todas las referencias (ramas y etiquetas), incluidas las actualizaciones que no sean de avance rápido. Lo uso para crear copias de seguridad de mi repositorio local.
La página del manual lo describe así:
Hice un alias para hacer el empuje:
Luego, solo corro
git bak
cuando quiero hacer una copia de seguridad.fuente
--mirror
realidad no ejecuta ningún tipo de verificación en los objetos que obtiene. Probablemente deberías corrergit fsck
en algún momento para evitar la corrupción.[Solo dejo esto aquí para mi propia referencia.]
Mi script de paquete llamado se
git-backup
ve asíA veces uso
git backup
y a veces uso, logit backup different-name
que me da la mayoría de las posibilidades que necesito.fuente
--global
usaste la opción, este alias solo se verá en tu proyecto (está definido en tu.git/config
archivo); eso es probablemente lo que deseas. Gracias por la respuesta más detallada y bien formateada.Ambas respuestas a estas preguntas son correctas, pero todavía me faltaba una solución completa y corta para hacer una copia de seguridad de un repositorio de Github en un archivo local. La esencia está disponible aquí, no dude en bifurcar o adaptarse a sus necesidades.
backup.sh:
restore.sh:
fuente
Puede hacer una copia de seguridad del repositorio de git con git-copy . git-copy guardó el nuevo proyecto como un repositorio simple, significa un costo mínimo de almacenamiento.
Entonces puedes restaurar tu proyecto con
git clone
fuente
Encontré la forma oficial simple después de atravesar los muros de texto de arriba que te haría pensar que no hay ninguno.
Crea un paquete completo con:
Restaurar con:
Esta operación es atómica AFAIK. Consulte los documentos oficiales para conocer los detalles arenosos.
Con respecto a "zip": los paquetes git están comprimidos y son sorprendentemente pequeños en comparación con el tamaño de la carpeta .git.
fuente
llegó a esta pregunta a través de google.
Esto es lo que hice de la manera más simple.
luego crea una nueva rama git desde esta rama
regrese a la rama original y continúe:
Suponiendo que lo arruinaste y necesitas restaurar algo de la rama de respaldo:
¡Lo mejor es que si algo está jodido, puede eliminar la rama de origen y volver a la rama de respaldo!
fuente