Eliminar el directorio del repositorio remoto después de agregarlos a .gitignore
Me comprometí y envié algún directorio a github. Después de eso, modifiqué el .gitignore
archivo agregando un directorio que debería ignorarse. Todo funciona bien, pero el directorio (ahora ignorado) permanece en github.
¿Cómo elimino ese directorio de github y el historial del repositorio?
Las reglas de su .gitignore
archivo solo se aplican a archivos sin seguimiento. Dado que los archivos en ese directorio ya estaban confirmados en su repositorio, debe eliminarlos, crear una confirmación y enviarla a GitHub:
git rm -r --cached some-directory
git commit -m 'Remove the now ignored directory "some-directory"'
git push origin master
No puede eliminar el archivo de su historial sin reescribir el historial de su repositorio; no debe hacer esto si alguien más está trabajando con su repositorio o si lo está usando desde varias computadoras. Si aún desea hacer eso, puede usar git filter-branch
para reescribir el historial; hay una guía útil para eso aquí .
Además, tenga en cuenta que el resultado git rm -r --cached some-directory
será algo como:
rm 'some-directory/product/cache/1/small_image/130x130/small_image.jpg'
rm 'some-directory/product/cache/1/small_image/135x/small_image.jpg'
rm 'some-directory/.htaccess'
rm 'some-directory/logo.jpg'
Hay rm
comentarios de git sobre el repositorio; los archivos todavía están en el directorio de trabajo.
Primera solución:
git rm --cached `git ls-files -i -c --exclude-from=.gitignore`
git commit -m 'Removed all files that are in the .gitignore'
git push origin main
Lo que eliminará todos los archivos/carpetas que están en tu git ignore, lo que te permitirá elegir cada uno manualmente.
Segunda solución: que elimina archivos de su repositorio git local.
git rm -r --cached .
git add .
git commit -m 'Removed all files that are in the .gitignore'
git push origin main
El indicador --cached elimina el archivo de su repositorio git pero no del sistema de archivos.
Según mi respuesta aquí: ¿Cómo eliminar un directorio del repositorio de git?
Para eliminar una carpeta/directorio solo del repositorio git y no del local, intente 3 sencillos pasos.
Pasos para eliminar el directorio
git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git push origin master
Pasos para ignorar esa carpeta en las próximas confirmaciones
Para ignorar esa carpeta en las próximas confirmaciones, cree un archivo en la raíz llamado .gitignore y coloque el nombre de esa carpeta en él. Puedes poner tantos como quieras.
El archivo .gitignore se verá así
/FolderName
Nota: Esta solución solo funciona con la GUI de Github Desktop .
Usar la GUI de Github Desktop es muy simple.
Mueva la carpeta a otra ubicación (fuera de la carpeta del proyecto) temporalmente.
Edite su
.gitignore
archivo y elimine la entrada de la carpeta que eliminaría el repositorio principal en la página de github.Confirme y sincronice la carpeta del proyecto.
Vuelva a mover la carpeta a la carpeta del proyecto.
Vuelva a editar
.gitignore
el archivo.
Eso es todo.
La primera respuesta de Blundell no funcionó para mí. Sin embargo, me mostró el camino correcto. He hecho lo mismo así:
> for i in `git ls-files -i --exclude-from=.gitignore`; do git rm --cached $i; done
> git commit -m 'Removed all files that are in the .gitignore'
> git push origin master
Le aconsejo que primero verifique los archivos que desea eliminar ejecutando la siguiente declaración:
git ls-files -i --exclude-from=.gitignore
Estaba usando un archivo .gitignore predeterminado para Visual Studio y noté que estaba eliminando todas las carpetas de registro y bin del proyecto, lo cual no era mi acción prevista.