Saltar al contenido

¿Cómo mover un repositorio de git a otro directorio y convertir ese directorio en un repositorio de git?

Este equipo de especialistas luego de ciertos días de investigación y de recopilar de datos, dimos con los datos necesarios, esperamos que resulte de utilidad para tu trabajo.

Solución:

Es muy sencillo. A Git no le importa cuál es el nombre de su directorio. Sólo le importa lo que hay dentro. Así que simplemente puedes hacer:

# copy the directory into newrepo dir that exists already (else create it)
$ cp -r gitrepo1 newrepo

# remove .git from old repo to delete all history and anything git from it
$ rm -rf gitrepo1/.git

Tenga en cuenta que la copia es bastante costosa si el repositorio es grande y tiene una larga historia. También puedes evitarlo fácilmente:

# move the directory instead
$ mv gitrepo1 newrepo

# make a copy of the latest version
# Either:
$ mkdir gitrepo1; cp -r newrepo/* gitrepo1/  # doesn't copy .gitignore (and other hidden files)

# Or:
$ git clone --depth 1 newrepo gitrepo1; rm -rf gitrepo1/.git

# Or (look further here: http://stackoverflow.com/q/1209999/912144)
$ git archive --format=tar --remote= HEAD | tar xf -

Una vez que creas newrepoel destino para poner gitrepo1 podría estar en cualquier lugar, incluso dentro newrepo si lo quieres. No cambia el procedimiento, solo la ruta que estás escribiendo. gitrepo1 espalda.

Es aún más simple que eso. Acabo de hacer esto (en Windows, pero debería funcionar en otro sistema operativo):

  1. Crear nuevorepo.
  2. Moverse gitrepo1 dentro nuevorepo.
  3. Moverse .git desde gitrepo1 para nuevorepo (un nivel arriba).
  4. Confirme los cambios (corrija el seguimiento según sea necesario).

Git solo ve que agregó un directorio y cambió el nombre de un montón de archivos. No hay problema.

Para hacer esto sin ningún dolor de cabeza:

  1. Mira cuál es la rama actual en el gitrepo1 con git statusdigamos rama “desarrollo”.
  2. Cambiar directorio al nuevorepoluego git clone el proyecto desde el repositorio.
  3. Cambiar rama en nuevorepo al anterior: git checkout development.
  4. sincronizar nuevorepo con el mayor, gitrepo1 utilizando rsync, excluyendo la carpeta .git: rsync -azv --exclude '.git' gitrepo1 newrepo/gitrepo1. No tienes que hacer esto con rsync por supuesto, pero lo hace tan suave.

El beneficio de este enfoque: eres bueno para continuar exactamente donde lo dejaste: tu rama anterior, cambios sin etapas, etc.

Si te ha resultado de provecho este artículo, agradeceríamos que lo compartas con el resto juniors de esta manera nos ayudas a dar difusión a esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *