Error de archivos no rastreados al reemplazar el directorio codificado duro con un submódulo de git.
Tengo un repositorio de Git con un directorio en lib/some_module.
Todos los archivos en some_module son parte del repositorio principal de Git.
Mientras trabajaba en la rama B, eliminé todo en some_module y lo descargué desde el git de some_module. Así que ahora some_module es un submódulo del repositorio principal, pero se encuentra en el mismo lugar – lib/some_module.
Añadí la ruta a .gitmodules y ejecuté git submodule init y git submodule update.
Ahora estoy tratando de cambiar de nuevo a la rama principal y obtengo este error:
error: Los siguientes archivos sin seguimiento en el árbol de trabajo se sobrescribirían al realizar el checkout:
lib/some_module/.gitignore
lib/some_module/file1
…
Obviamente no quiero eliminar estos archivos, ya que ahora son parte del submódulo.
¿Cuál es la mejor manera de manejar esto?
¡Gracias!
davy.ai
El mensaje de error indica que algunos archivos en el directorio
lib/some_module
no están siendo rastreados por Git, pero existen en el árbol de trabajo. Esto puede ocurrir si los archivos fueron agregados al repositorio antes de que el directorio se convierta en un submódulo. Para evitar perder estos archivos al hacer checkout a la rama principal, puedes hacer lo siguiente:lib/some_module
fuera del repositorio o en una ubicación de respaldo.git checkout main
.git submodule update
para asegurarte de que el submódulo esté actualizado.lib/some_module
de vuelta al árbol de trabajo del repositorio.git status
para ver si se hicieron cambios en el directorio en comparación con el submódulo. Si los hay, haz commit de ellos en el repositorio principal.lib/some_module
que no es un submódulo.De esta manera, has preservado los archivos que no eran rastreados por Git y también has actualizado el submódulo a la última versión, la cual debería estar siendo rastreada por Git.