De alguna manera, cuando git init
edité mi último proyecto hace aproximadamente un mes, ejecuté el comando en el directorio un directorio más alto que la raíz de mi proyecto.
Entonces mi repositorio está en el ./project
directorio y no en el ./project/my-new-project
directorio. No sé cómo no me di cuenta del problema antes, pero nunca busqué el directorio .git hasta ahora.
¿Hay alguna manera, sin matar mi proyecto, de mover el repositorio al directorio adecuado y luego decirle a git cuál es la nueva base del proyecto? Mover el directorio no funciona. Git cree que se han eliminado todos los archivos.
Tuve el problema opuesto: tuve que cambiar la raíz de git al directorio principal (de proyecto / src a proyecto) Para mi gran sorpresa, ¡lo siguiente funcionó!
git detectó inteligentemente que todos los archivos nuevos fueron renombrados como versiones de los antiguos y no se perdió ningún historial
Puede intentar algo similar ... mueva la carpeta .git y agregue los archivos nuevamente antes de confirmar
fuente
git rm'd
los archivos de su ubicación anterior, por lo quegit status
(correctamente) terminé informando una serie de operaciones de cambio de nombre. Cuanto más trabajo con git, más me gusta..gitignore
y ejecutégit add -A
en la carpeta raíz; después de esto, git mostró correctamente todos los archivos como enrenamed
lugar dedeleted
. 2. Como uso submódulos, tuve que moverme.gitmodules
a la nueva raíz y actualizar la ruta del submódulo en los distintos archivos de configuración de git. Para encontrar qué archivos modificar, ejecutégrep -nrI --color 'old/path/to/submodule' .
Esto funcionó para mí y mantuvo intacta toda mi historia. Desde la carpeta raíz incorrecta (el padre donde accidentalmente inicializó el repositorio):
Mover la carpeta:
Reinicialice el repositorio de git:
Vuelva a agregar todos los archivos, confirme y envíe:
¡Hecho! Consíguete una cerveza.
Cuando confirme el repositorio de git después de reinicializar, obtendrá un montón de resultados que se ven así:
En otras palabras, todas sus referencias de la carpeta principal y el cambio de nombre para usar la carpeta correcta.
fuente
git filter-branch
te permite reescribir la historia de esa manera. Lagit filter-branch
página de manual incluso tiene su caso como ejemplo :Probablemente desee
git clone
colocar el repositorio en un nuevo subdirectorio antes (¿o después?) De lagit filter-branch
ejecución. (Clonar antes de filter-branch y ejecutar filter-branch en el nuevo clon tendría la ventaja de dejar el.git/
directorio original en su lugar como respaldo en caso de que algo salga mal).fuente
.git
repositorio permanece en el nivel superior mientras que los subdirectorios se "consideran la raíz"); esto literalmente descartará todos los demás archivos en el repositorio y moverá todos lossubdirectory/*
archivos a la carpeta raíz. .git push --force
actualización del repositorio de subida después de esto.Git puede recordar archivos con sus hashes,
Simplemente mueva su
.git
directorio raíz y dígalegit
que recuerde todos los cambios de archivos con la--all
opción.fuente
Use
git-mv
para mover sus archivos "arriba" a la ubicación adecuada, luegogit-rm
al directorio "my-new-project".fuente
Vine aquí buscando una forma de mover mi repositorio a cualquier parte .
En caso de que no fuera el único, esto es lo que hice al final:
https://git.wiki.kernel.org/index.php/GitFaq#How_do_I_clone_a_repository_with_all_remotely_tracked_branches . en esa nueva carpeta. (Luego verificó si los archivos y el registro habían aparecido o no). Mantuve el antiguo repositorio por un tiempo, por si acaso ...
De esa manera pude mover mi repositorio sin perder el historial.
Saludos cordiales, Dinah
fuente
mv /path/to/the/old/location/of/the/repo /path/to/the/new/location/of/the/repo
.Habiendo pasado por este mismo problema, mi solución final fue:
git reset --hard HEAD
Funcionó como magia sin impacto en la historia. - NB Si ha realizado algunos cambios, asegúrese de confirmarlos antes de mover el directorio .git.
fuente
Aquí hay dos formas:
fuente