Tengo un directorio gitrepo1 . Este directorio es un repositorio de git.
Me gustaría mover este gitrepo1 a otro directorio newrepo .
El directorio newrepo debería ser el nuevo repositorio de git sin pérdida de historial de git y debería contener el directorio gitrepo1 .
El directorio gitrepo1 debería ser solo un directorio ahora (dentro de newrepo ), sin ningún
.git
índice, es decir, ya NO debería ser un repositorio git independiente o un submódulo.
¿Cómo puedo hacer esto?
mv girepo1 newrepo
??Respuestas:
Es muy simple. A Git no le importa cuál es el nombre de su directorio. Solo le importa lo que hay dentro. Entonces, simplemente puede hacer:
Tenga en cuenta que la copia es bastante cara si el repositorio es grande y con una larga historia. También puedes evitarlo fácilmente:
Una vez que lo crea
newrepo
, el destino para colocargitrepo1
podría ser cualquier lugar, incluso adentronewrepo
si lo desea. No cambia el procedimiento, solo la ruta que está escribiendogitrepo1
.fuente
cp
como casi todos los comandos o funciones son específicos de otros sistemas operativos. De hecho, es específico para todos los sistemas operativos que no sean Windows. Intente llamar a microsoft y preguntarles por qué no son POSIX. De todos modos,cp
significa copiar.mv
significa moverse.rm
significa eliminar. Puede encontrar equivalentes de Windows..git/
contiene todo el historial, que incluye su última confirmación. Dondequiera que lo pongas, tienes toda la historia. De hecho, si todos los archivos de ese directorio son diferentes del repositorio original del que los tomó.git/
, lo único que le indicaría que algunos archivos se eliminaron y algunos sin seguimiento están presentes. Con agit reset --hard
, los archivos eliminados se recuperarían automáticamente. Lo único a tener en cuenta es que con solo copiar.git/
no se pueden recuperar los cambios no confirmados.Es un poco tarde y la pregunta ya está respondida pero, para hacerlo sin dolor de cabeza:
git status
, digamos desarrollo de ramagit clone
el proyecto del repositorio a la nueva carpetagit checkout development
rsync
, excluyendo la carpeta .git :rsync -azv --exclude '.git' gitrepo1 newrepo/gitrepo1
Entonces estás listo para continuar donde lo dejaste
fuente
Es incluso más simple que eso. Acabo de hacer esto (en Windows, pero debería funcionar en otro sistema operativo):
Git solo ve que agregó un directorio y renombró un montón de archivos. No es problema.
fuente
No soy un experto, pero copio la carpeta .git a una nueva carpeta, luego invoco:
git reset --HARD
fuente