Eliminación del historial de confirmación de Git (tanto local como remoto)
Aunque la mayoría de nosotros sabemos que nunca debemos enviar información confidencial a un repositorio de código fuente (ya sea Git, Subversion o lo que sea), hay momentos en los que sucede.
La mayoría de las veces, me imagino que sucede cada vez que estamos trabajando en el código y luego saltando de un lado a otro entre el IDE y una terminal y confirmando el código para asegurarnos de que no estamos perdiendo ningún cambio.
Esto sucede el tiempo suficiente y luego terminamos asignando una clave de consumidor y un secreto de consumidor o un nombre de usuario y contraseña o algo similar al repositorio.
Afortunadamente, podemos eliminar las confirmaciones para revertir nuestro código, pero la mayoría de los sistemas de control de fuentes terminan manteniendo un historial de todo (lo cual es bueno). Pero, ¿qué sucede si necesitamos eliminar el historial de confirmaciones de Git en nuestros repositorios locales y remotos?
Eliminación del historial de confirmaciones de Git
Para este ejemplo, supongo que está trabajando con Git y está trabajando con la línea de comandos (aunque me imagino que la mayoría de las GUI permitirían la capacidad de hacer esto).
A continuación, supongo que la confirmación que desea eliminar de su historial es la confirmación más reciente y solo desea retroceder un paso.
Para eliminar por completo el historial de confirmación de git, solo hay dos cosas que debe hacer:
- rebase a la confirmación anterior,
- empuje la rama al control remoto.
Para hacer esto, verifique los dos pasos del medio aquí :
# First, review the history. (Gotta make sure you're going to roll back to the right place!)
$ git log --pretty=oneline --abbrev-commit
# Remove HEAD back to the commit prior to the one that has sensitive information
# and set equal to the last good commit.
$ git rebase -i HEAD~1
# Push the content to the remote repository and remove it from the history.
$ git push origin +<name of branch>
# If you want to review the history...
$ git log --pretty=oneline --abbrev-commit
Los pasos adicionales antes y después de las confirmaciones principales le permiten obtener una lista visual de confirmaciones en caso de que desee elegir una confirmación separada a la que desee revertir.
Y puede ejecutar el comando tanto antes como después de los otros dos comandos (como se ve en la esencia anterior) para asegurarse de que la lista de confirmaciones aparezca como desea en el historial del proyecto.