Necesito transferir un repositorio completo a una nueva máquina que no esté en red, preferiblemente como una entidad de archivo único. El paquete git permite una git fetch
, git pull
operación de estilo en un ambiente sneakernet pero parece suponer que usted ya tiene una versión de trabajo de la cesión temporal en la máquina de destino.
Cuál es la invocación correcta para:
- Agrupar todas las ramas en el repositorio actual
- Inicie el nuevo repositorio en el directorio de destino, es decir, instale correctamente la confirmación de root
Envié un parche en sentido ascendente para aclarar:
`git clone` can use any bundle created without negative refspecs
(e.g., `new`, but not `old..new`).
If you want to match `git clone --mirror`, which would clone other
refs such as `refs/remotes/*`, use `--all`.
If you want to provide the same set of refs that a clone directly
from the source repository would get, use `--branches --tags` for
the `<git-rev-list-args>`.
Así que $ git bundle create repo.bundle --branches --tags
mejor coincide con la clonación.
$ git bundle create repo.bundle --all
proporcionará una imagen reflejada de su máquina fuente, incluidas sus referencias remotas.
--all
opciones no están en mi página de manual parabundle
(estoy viendo la versión 1.7.6.msysgit.0), ni tampoco el uso del archivo .bundle en la sección de URL paraclone
. Me da mayor confianza recomendar su uso.git bundle create <file> <git-rev-list-args>
. Correrman git-rev-list
(oman git-log
) te daría--all
. Pero estoy de acuerdo en que debería ser más visible en la documentación del comando del paquete.git show-ref
", que no incluye [lista] las opciones de git-rev-list.git-rev-list-args
es como se seleccionan las referencias que se muestran con elgit show-ref
comando.--all
incluyó ramas de seguimiento remoto para mí (git 2.1.4). Pude verrefs/remotes/origin/*
congit bundle list-heads bundlefile
ogit ls-remote bundlefile
. Aunque recuperarlos del paquete es un poco complicado.Primero clone el repositorio e incluya la
--mirror
opción.git clone --mirror [email protected]:path/repo.git
Esto asegura que todas las sucursales remotas también sean sucursales locales listas para agruparse.
Entonces corre
git bundle create repo.bundle --all
como se describe en la respuesta de Jakub Narębskifuente
Te sugiero que tar o zip la carpeta .git y simplemente descomprimirla en la nueva ubicación y luego hacerlo
git reset --hard HEAD
. Todo lo que se requiere 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.fuente