Las carpetas de GitHub tienen una flecha blanca
Recientemente entré a github y veo una flecha blanca en una de mis carpetas.
y cuando hago clic en la carpeta, no la abre. En mi máquina local, tiene contenidos, pero en github no puedo acceder a ellos. ¿Qué quiere decir esto?
Síntoma
Compruebe si localmente tiene una .git/
subcarpeta debajo de esa carpeta.
Causa
Eso significaría que la carpeta (localmente) es un repositorio Git anidado , cuyo árbol SHA1 se registra como un "gitlink" (carpeta gris con una flecha blanca recta)
Lo que luego verías en GitHub es que gitlink : SHA-1 del objeto se refiere a una confirmación en otro repositorio, representada por un nombre de carpeta vacío. Es un repositorio Git anidado.
Si ve un folder @ xxx
, entonces es una entrada de submódulo , lo que significa que su propio repositorio tiene un .gitmodules
, que registra, además del gitlink, la URL real del repositorio remoto.
Representa el nombre del objeto de la confirmación en la que el superproyecto espera que esté el directorio de trabajo del submódulo anidado.
En ambos casos (flecha blanca con el nombre de una carpeta, o flecha blanca con folder @ xxx
el nombre de la carpeta y la versión), es un Gitlink representado un repositorio Git anidado: un marcador de posición para otro repositorio Git, por lo tanto, una carpeta vacía. Pero en el segundo caso, esa carpeta vacía sería referenciada/visible en un .gitmodules
archivo especial.
Solución (para quitar la flecha blanca)
Para restaurar el contenido de esa carpeta:
submódulo:
A git clone --recurse-submodules
restauraría el contenido de ese submódulo en su repositorio local (a diferencia de un repositorio Git anidado, donde su URL no se registra y el contenido de la carpeta permanecería vacío)
La flecha blanca permanecería en el repositorio remoto y folder @ version
mostraría a qué SHA1 del repositorio de submódulos hace referencia su proyecto.
Repositorio Git anidado:
Alternativamente, si no le importa el historial de esa carpeta, puede eliminar localmente su subcarpeta (asumiendo que no.git
es un submódulo, lo que significa que no se hace referencia a él en un archivo en su repositorio principal), agregar, confirmar y enviar.
La flecha blanca desaparecerá y podrá acceder al contenido de esa carpeta en GitHub..gitmodules
Entonces necesitarás eliminar la entrada de gitlink:
git rm --cache client_folder
# without a trailing slash:
# not client_folder/ but client_folder
Finalmente, puede agregar, confirmar y enviar el contenido de esa carpeta.
La flecha puede significar que es un submódulo.
Tu podrías intentar:
git add yourfolder
Si eso resulta en un error como:
xxx submodule xxx
aparece, puedes probar esto:
git rm --cached yourfolder
Entonces, podrías ejecutar con éxito:
git add yourfolder
En su máquina, si navegó hasta el directorio con la flecha e intentó ver los archivos ocultos, verá una .git
carpeta que indica que es un repositorio. Esto significa que es un repositorio contenido dentro del repositorio externo que envió a GitHub.
La forma más sencilla de deshacerse de la flecha y empezar a ver tus archivos correctamente (en mi opinión) es eliminando la .git
carpeta. De esa manera, deja de convertirse en un repositorio de git y vuelve a ser una carpeta normal.
Ahora, cuando ingresa a GitHub, normalmente puede acceder a la carpeta y ver todo su contenido.
En mi caso:
git rm --cached portal
ls
git status
git add --all
...
Si desea eliminar un submódulo de los archivos de configuración de git, siga esto, recuerde que si NO desea eliminar el directorio local de ese submódulo, NO realice el Paso X:
Elimine la sección relevante del archivo .gitmodules.
Preparar los cambios de .gitmodules git add .gitmodules
Elimine la sección relevante de .git/config.
Ejecute git rm --cached path_to_submodule (sin barra diagonal).
Ejecute rm -rf .git/modules/path_to_submodule (sin barra diagonal).
Confirmar git commit -m "Submódulo eliminado"
(Arriesgado) Paso X: - Eliminar los archivos del submódulo ahora sin seguimiento rm -rf path_to_submodule