¡¡Oh, He añadido un fichero que no quería!! ¿Que puedo hacer, Cómo puedo borrarlo de mi repositorio?
No te preocupes, aquí te explicamos como puedes borrar un fichero de tu repositorio permanentemente incluso si lo añadiste hace tiempo.
Si no sabes cuando añadiste el fichero, lo puedes buscar y borrar desde el principio:
1 |
$ git filter-branch --index-filter "git rm --cached --ignore-unmatch {file}" |
Si quieres borrarlo de un commit concreto (normalmente suele ser el último). Añadimos a nuestro comentario anterior el id del commit ($ git log).
1 2 3 4 |
$ git filter-branch --index-filter "git rm --cached --ignore-unmatch {file}" {COMMIT} Ejemplo: $ git filter-branch --index-filter "git rm --cached --ignore-unmatch {file}" HEAD |
También puedes borrar el fichero en un rango de commits, aquí tienes un ejemplo:
1 2 3 |
$ git filter-branch --index-filter "git rm --cached --ignore-unmatch {file}" {COMMIT}..{COMMIT} Ejemplo: $ git filter-branch --index-filter "git rm --cached --ignore-unmatch {file}" 7b3072c..HEAD |
Una vez has limpiado tu repositorio, deberás actualizar el reflog forzando al garbage collector a borrar las referencias de los ficheros eliminados.
1 2 3 |
$ git for-each-ref --format="delete %(refname)" refs/original | git update-ref --stdin $ git reflog expire --expire=now --all $ git gc --prune=now |
Y por último deberás actualizar todas las ramas en el repositorio remoto, a menos que crees un nuevo repositorio.
¡Todo el equipo debe borrar su repositorio y clonarlo denuevo para evitar incluir denuevo los ficheros indeseados!
1 2 |
$ git push origin --force --all $ git push origin --force --tags |
Espero que te haya servido de ayuda, siempre se nos puede colar un fichero indeseado cuando usamos el comando «$ git add .», por eso, intenta siempre que puedas añadir los ficheros específicos a tu repositorio y no todos.