Pregunta Cómo hacer un paquete completo


Necesito transferir un repositorio completo a una nueva máquina no conectada a la red, preferiblemente como una entidad de un solo archivo. El paquete de git permite git fetch, git pull operación de estilo en un entorno de sneakernet, pero parece suponer que ya tiene una versión de trabajo del repositorio en la máquina de destino.

¿Cuál es la invocación correcta para:

  1. Haz todas las sucursales en el repositorio actual
  2. Inicie el repositorio nuevo en el directorio de destino, es decir, obtenga la confirmación raíz instalada correctamente

74
2017-08-03 09:07


origen


Respuestas:


¿Cuál es la invocación correcta para:

  • Agrupe todas las ramas en el repositorio actual

Sencillo:

$ git bundle create repo.bundle --all

aquí repo.bundle es el nombre del archivo de paquete que desea crear. Tenga en cuenta que --all no incluiría ramas de rastreo remoto ... al igual que el clon ordinario tampoco lo haría.

  • Inicie el repositorio nuevo en el directorio de destino, es decir, obtenga la confirmación raíz instalada correctamente

Primero, clone es solo init + fetch (+ administrativia).

En segundo lugar, puede usar el archivo de paquete en cualquier lugar donde se pueda usar la URL del repositorio, para que pueda simplemente clone de un archivo de paquete:

$ git clone repo.bundle

Esto crearía repo como un repositorio git


126
2017-08-03 12:14



Primero clona el repositorio e incluye el --mirror opción.

git clone --mirror git@example.org:path/repo.git

Esto garantiza que todas las sucursales remotas también sean sucursales locales listas para el bundeling.

Entonces corre

git bundle create repo.bundle --all como se describe en la respuesta de Jakub Narębski


22
2017-12-08 14:21



Sugeriría que cargues o zip la carpeta .git y simplemente lo descomprimes en la nueva ubicación y luego lo hagas git reset --hard HEAD. Todo lo que se necesita para todas las ramas está en .git y todo lo que debe hacer es ajustar los controles remotos en el archivo .git / config o eliminarlos.

tar cf myrepo.tgz .git
cp myrepo.tgz [USB_STICK]
... move to new machine ...
mkdir myrepo && cd myrepo
tar xpf [USB_STICK]/myrepo.tgz
git reset --hard HEAD

1
2017-08-03 09:16