¿Cómo se git revertusa?
Esto puede sonar como una pregunta duplicada, pero cuando la gente lo hace, la respuesta suele ser, ¿usar git resetsegún Revertir a una confirmación por un hash SHA en Git?
Luego, cuando alguien pregunta cómo usar, la git resetgente responde diciendo que debe usar git revertsegún Git: cómo revertir
Antes de que te des cuenta, aparecieron 8 personas diferentes con sus propias formas únicas de salvar el trasero del OP, todo lo cual está sobre tu cabeza.
Así que intentemos ceñirnos al escrito y escribir una guía para principiantes git revert.
Un escenario: te has comprometido dos veces a dominar y es malo. Has presionado y otras personas tienen tus malos cambios.
Quieres deshacerlo. No es algo que pueda deshacer manualmente en el código usted mismo, digamos que algún asistente o administrador de paquetes cambió toneladas de cosas por todas partes, solo quiere dejarlo todo como estaba.
De esto se trata el control de fuente. Estoy seguro de que es fácil.
Está bien, lo vas a usar git revertpero ¿cómo?
¿Y después de correr git reverttienes que hacer algo más después? ¿Tiene que confirmar los cambios revertidos o revertir directamente al repositorio o qué?
Obviamente, tendrás que presionar de nuevo y probablemente anunciar tus bolas al equipo.

git revert -n <commitToRevet>ogit revert --no-commit <commitToRevet>Usa git revert así:
git revert <insert bad commit hash here>git revertcrea una nueva confirmación con los cambios que se deshacen.git resetborra tu historial de git en lugar de realizar una nueva confirmación.Los pasos posteriores son los mismos que para cualquier otra confirmación.
fuente
La razón
resetyreverttienden a surgir mucho en las mismas conversaciones es porque diferentes sistemas de control de versiones los usan para significar cosas diferentes.En particular, las personas que están acostumbradas a SVN o P4 que quieren deshacerse de los cambios no confirmados en un archivo, a menudo buscarán
revertantes de que se les diga lo que realmente quierenreset.De manera similar, el
revertequivalente en otros VCSes a menudo se llamarollbacko algo similar, pero "rollback" también puede significar "Quiero descartar por completo las últimas confirmaciones", lo cual es apropiado pararesetpero norevert. Por lo tanto, existe mucha confusión cuando las personas saben lo que quieren hacer, pero no tienen claro qué comando deberían usar para ello.En cuanto a sus preguntas reales sobre revert ...
git revert first-bad-commit..last-bad-commitDe forma predeterminada, le
git revertsolicita un mensaje de confirmación y luego confirma los resultados. Esto se puede anular. Cito la página del manual :En particular, de forma predeterminada crea una nueva confirmación para cada confirmación que está revirtiendo. Puede usar
revert --no-commitpara crear cambios revertirlos todos sin realizar esos cambios como confirmaciones individuales, luego realizar la confirmación cuando lo desee.fuente
git revert first-bad-commit..last-bad-commit: Creo que esto debería sergit revert parent-of-first-bad-commit..last-bad-commit.La pregunta es bastante antigua pero revertir todavía confunde a la gente (como yo)
Como principiante, después de algunas pruebas y errores (más errores que pruebas), tengo un punto importante:
git revertrequiere la identificación de la confirmación que desea eliminar manteniéndola en su historialgit resetrequiere la confirmación que desea mantener y, en consecuencia, eliminará cualquier cosa posterior del historial.Es decir, si usa
revertcon la primera identificación de confirmación, se encontrará en un directorio vacío y una confirmación adicional en el historial, mientras que con el reinicio su directorio será ... revertido a la confirmación inicial y su historial se volverá como si las últimas confirmaciones nunca sucedieron.Para ser aún más claro, con un registro como este:
El uso
git revert cb76ee4traerá de forma predeterminada sus archivos a 01b56c6 y agregará una confirmación adicional a su historial:git reset 01b56c6en su lugar, devolverá sus archivos a 01b56c6 y limpiará cualquier otra confirmación posterior de su historial:Sé que estos son "la base", pero fue bastante confuso para mí, al ejecutar la
revertprimera identificación ('primer compromiso') esperaba encontrar mis archivos iniciales, me tomó un tiempo entender que si necesita sus archivos de vuelta como 'primer compromiso', debe usar la siguiente identificación.fuente
Revertí algunas confirmaciones ejecutando 'git revert commit id' como:
Luego se me pidió que confirmara la reversión (tal como lo haría al ejecutar 'git commit'). Mi programa de terminal predeterminado es Vim, así que ejecuté:
Finalmente empujé el cambio al repositorio con:
fuente