¿Hay alguna forma sencilla de realizar una copy de security de un repository de git completo que incluya todas las twigs y tags?
¿Qué hay de hacer un clon de eso?
git clone other/repo.git
Cada repository es una copy de security de su control remoto.
git bundle
Me gusta ese método, ya que resulta en un solo file, más fácil de copyr.
Ver ProGit: pequeño package de alegría .
Ver también " ¿Cómo puedo enviar a alguien un repository git? ", Donde el command
git bundle create /tmp/foo-all --all
se detalla:
git bundle
solo includeá las references que se muestran en git show-ref : esto incluye encabezados, tags y encabezados remotos.
Es muy importante que la base utilizada esté en manos del destino.
Está bien, por precaución, hacer que el file del package contenga objects que ya están en el destino, ya que estos se ignoran al desempaquetar en el destino.
Para usar ese package, puede clonarlo, especificando una carpeta inexistente (fuera de cualquier repository git):
git clone /tmp/foo-all newFolder
Ampliando otras respuestas, esto es lo que hago:
Configure el repository: git clone --mirror user@server:/url-to-repo.git
Luego, cuando desee actualizar la copy de security: git remote update
desde la location del clon.
Esto respalda todas las twigs y tags, incluidas las nuevas que se agregan más tarde, aunque vale la pena señalar que las twigs que se eliminan no se eliminan del clon (lo que para una copy de security puede ser una buena opción).
Esto es atómico por lo que no tiene los problemas que una copy simple podría tener.
Todo está contenido en el directory .git
. Solo respalde eso junto con su proyecto como lo haría con cualquier file.
usar package de git, o clonar
copyr el directory de git no es una buena solución porque no es atómico. Si tiene un repository grande que demora mucho time en copyrse y alguien lo empuja a su repository, esto afectará su respaldo. Clonar o hacer un package no tendrá este problema.
Puede hacer una copy de security del git repo con git-copy a un tamaño de almacenamiento mínimo.
git copy /path/to/project /backup/project.repo.backup
Entonces puedes restaurar tu proyecto con git clone
git clone /backup/project.repo.backup project
Aquí hay dos opciones:
Puede tomar directamente una tar del directory git repo ya que tiene todo el contenido del repository en el server. Existe una pequeña posibilidad de que alguien esté trabajando en repository mientras realiza copys de security.
El siguiente command le dará el clon desnudo de repo (al igual que en el server), luego puede tomar un tar de la location donde lo clonó sin ningún problema.
git clone --bare {your backup local repo} {new location where you want to clone}
cd /path/to/backupdir/ git clone /path/to/repo cd /path/to/repo git remote add backup /path/to/backupdir git push --set-upstream backup master
esto crea una copy de security y realiza la configuration, para que pueda hacer un git push para actualizar su copy de security, lo que probablemente sea lo que quiere hacer. Solo asegúrate de que / path / to / backupdir y / path / to / repo sean al less discos duros diferentes, de lo contrario no tiene mucho sentido hacer eso.
Por lo que sé, puedes hacer una copy del directory en el que está tu repository, ¡eso es todo!
cp -r project project-backup