qué - ¿Cómo puedo eliminar completamente un archivo de un repositorio git?
ignorar archivos git (2)
La herramienta que desea es git filter-branch
. Su uso se describe here , pero básicamente:
$ git filter-branch --tree-filter ''rm -f my_file'' HEAD
eliminará "mi_archivo" de cada confirmación.
Tenga en cuenta que esto reescribe todas las confirmaciones, por lo que si ingresa a un repositorio remoto, tiene que (a) forzar la actualización, y (b) todos los que se retiraron de usted ahora tendrán confirmaciones duplicadas (ya que reescribió el historial), como descrito en la página de git rebase
.
Hace poco noté que los archivos del proyecto que usan mis editores de texto (junto con otros elementos no deseados) se agregaron al repositorio de git para el proyecto. Dado que en realidad no son parte del proyecto, me gustaría eliminarlos, pero git rm
no elimina las versiones antiguas del repositorio, y no pude encontrar nada más que parezca prometedor.
Para eso sirve git filter-branch
, pero ten en cuenta que tu historial de repositorio cambiará, y los hashes de confirmación serán diferentes después de la reescritura del historial.
Si también quieres liberar el espacio, te recomiendo que uses git forget-blob
, ya que git filter-branch
sí solo no hará que git olvide tu archivo, ya que aún puede ser referenciado por controles remotos, reflog, etiquetas y demás.
git forget-blob main.c.swp
Puede obtener más información here