No solo los desarrolladores novatos, sino también los profesionales apasionados tienen que recurrir a deshacer cualquier cambio. Y luego, lo primero que me viene a la mente es el comando git revert, como la forma más segura. Y hay trampas de las que quiero hablarte.
Tomemos una situación simple: un desarrollador decide implementar funciones matemáticas. Pero a la mitad, se da cuenta de que sería bueno descomponer esta tarea, digamos, en dos subtareas:
- Implementar operaciones aritméticas (suma, resta, división, etc.)
- Implementar operaciones numéricas (valor máximo, valor mínimo, módulo de un número, etc.)
Será más fácil de comprobar y probar. Pero ya ha comenzado a implementarlo, ya se han creado los commits, ¿y qué hacer? ¡No reescribas lo mismo!

Considere un árbol de compromiso. Vemos que nuestro desarrollador ha creado una rama functions, la clase Aritmética , que se encarga de la implementación de las operaciones aritméticas (commit A ), y la clase Numerical , que se encarga de la implementación de las operaciones numéricas (commit N ). En total, hay dos clases y dos confirmaciones.

git revert
Se decidió no reescribir nada, heredar functionsy crear dos ramas numericaly arithmetic. Y deshaga las confirmaciones innecesarias en consecuencia. Es decir, ejecutar git revert Nen la rama aritmética y git revert Aen la rama numérica. ¡Ingenioso y sencillo!

El trabajo está en pleno apogeo y solo queda una cosa: apestar al maestro con estas ramas.

? Arithmetic, Numerical!
, git revert . 4 :
A ⟶ N ⟶ revert A ⟶ revert N
revert .
git reset
, reset, revert . … . , .
git rebase
— git rebase .
numerical arithmetic
git rebase -i –root
, pick drop. . numerical:

.
master .

, , , (git push) git , , .
git, , . , , ?