Recientemente me di cuenta de que los archivos del proyecto que usan mis editores de texto (junto con otros archivos basura) se agregaron al repositorio git para el proyecto. Dado que en realidad no son parte del proyecto, me gustaría eliminarlos, pero git rm
no elimino las versiones anteriores del repositorio, y no pude encontrar nada más que parezca prometedor.
78
Respuestas:
La herramienta que desea es
git filter-branch
. Su uso se describe aquí , pero básicamente:eliminará "my_file" de cada confirmación.
Tenga en cuenta que esto reescribe cada confirmación, por lo que si ingresa a un repositorio remoto, debe (a) forzar la actualización, y (b) todos los demás que sacaron de usted ahora tendrán confirmaciones duplicadas (ya que reescribió el historial), como descrito en la
git rebase
página del manual .fuente
--prune-empty
para que también se eliminen las confirmaciones vacías generadas como resultado.git push --force
? @mipadiPara esto es
git filter-branch
, pero tenga en cuenta que su historial de repositorios cambiará y los hashes de confirmación serán diferentes después de la reescritura del historial.Si también desea liberar espacio, le recomiendo que lo use
git forget-blob
, porque porgit filter-branch
sí solo no hará que git olvide su archivo, ya que aún puede ser referenciado por controles remotos, reflog, etiquetas y demás.git forget-blob main.c.swp
Puedes obtener más información aquí
fuente