Para todos los efectos prácticos, la primera que debe estar preocupado es Cambiar sus contraseñas! No está claro a partir de su pregunta si su repositorio de git es completamente local o si aún tiene un repositorio remoto en otro lugar; si es remoto y no está protegido de los demás, tienes un problema. Si alguien ha clonado ese repositorio antes de arreglarlo, tendrá una copia de sus contraseñas en su máquina local, y no hay forma de que pueda obligarlos a actualizar a su versión "fija" sin que haya pasado del historial. Lo único seguro que puede hacer es cambiar su contraseña por otra cosa dondequiera que la haya usado.
Con eso fuera del camino, aquí está cómo solucionarlo. GitHub answered exactly that question as an FAQ:
Nota para usuarios de Windows: usar comillas (") en lugar de sencillos en este comando
git filter-branch --index-filter \
'git update-index --remove filename' <introduction-revision-sha1>..HEAD
git push --force --verbose --dry-run
git push --force
Tenga en cuenta que una vez que ha empujado este código a un repositorio remoto como GitHub y otros han clonado ese repositorio remoto, ahora se encuentra en una situación en la que está reescribiendo el historial. Cuando otros intenten desplegar sus últimos cambios después de esto, recibirán un mensaje que indica que los cambios no se pueden aplicar porque no es un avance rápido.
Para solucionar esto, deberán eliminar su repositorio existente y volver a clonarlo, o seguir las instrucciones en "RECUPERACIÓN DE UPSTREAM REBASE" en el git-rebase manpage.
En el futuro, si accidentalmente cometer algunos cambios con información sensible, pero se nota antes empujando a un repositorio remoto, existen algunas soluciones más sencillas. Si la última confirmación es la de añadir la información confidencial, puede simplemente eliminar la información sensible, a continuación, ejecuta:
git commit -a --amend
que modificará la confirmación anterior con los nuevos cambios que ha realizado, incluyendo el traslado de archivos completos hecho con un git rm
. Si los cambios son más atrás en la historia, pero todavía no empujado a un repositorio remoto, se puede hacer un rebase interactivo:
git rebase -i origin/master
que se abre un editor con las confirmaciones que ha realizado desde el último ancestro común con el mando a distancia repositorio. Cambie "pick" por "edit" en cualquier línea que represente una confirmación con información confidencial, y guárdela y salga.Git le guiará a través de los cambios, y dejar en un lugar donde puede:
$EDITOR file-to-fix
git commit -a --amend
git rebase --continue
Para cada cambio con información sensible. Eventualmente, terminará de nuevo en su sucursal, y puede presionar con seguridad los nuevos cambios.
Relacionados: [¿Cómo eliminar/eliminar un archivo grande del historial de confirmaciones en el repositorio de Git?] (Http://stackoverflow.com/questions/2100907/how-do-i-purge-a-huge-file- from-commits-in-git-history) y [Eliminar completamente el archivo de todo el historial de confirmaciones del repositorio de Git] (http://stackoverflow.com/questions/307828/completely-remove-unwanted-file-from-git-repository-history) –