Eliminar el directorio del repositorio remoto después de agregarlos a .gitignore

Resuelto janw asked hace 13 años • 10 respuestas

Me comprometí y envié algún directorio a github. Después de eso, modifiqué el .gitignorearchivo 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?

janw avatar Oct 28 '11 16:10 janw
Aceptado

Las reglas de su .gitignorearchivo 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-branchpara reescribir el historial; hay una guía útil para eso aquí .

Además, tenga en cuenta que el resultado git rm -r --cached some-directoryserá 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 rmcomentarios de git sobre el repositorio; los archivos todavía están en el directorio de trabajo.

Mark Longair avatar Oct 28 '2011 09:10 Mark Longair

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.

Blundell avatar Feb 10 '2013 12:02 Blundell

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

eliminar directorio

Suresh Karia avatar Aug 24 '2015 12:08 Suresh Karia

Nota: Esta solución solo funciona con la GUI de Github Desktop .

Usar la GUI de Github Desktop es muy simple.

  1. Mueva la carpeta a otra ubicación (fuera de la carpeta del proyecto) temporalmente.

  2. Edite su .gitignorearchivo y elimine la entrada de la carpeta que eliminaría el repositorio principal en la página de github.

  3. Confirme y sincronice la carpeta del proyecto.

  4. Vuelva a mover la carpeta a la carpeta del proyecto.

  5. Vuelva a editar .gitignoreel archivo.

Eso es todo.

efkan avatar Dec 21 '2016 09:12 efkan

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.

Oncel Umut TURER avatar Apr 07 '2017 12:04 Oncel Umut TURER