Cómo realizar la reversión de la versión con elegancia

En el proceso de desarrollo iterativo de la versión, creo que muchas personas tendrán un tiempo de envío incorrecto (al menos Liang Xu ha tenido esta experiencia varias veces). En este caso, un programador novato puede estar sorprendido y nervioso. Los programadores senior sonreirán levemente, tocarán sus frentes brillantes y luego revertirán la versión en silencio.

Para la reversión de la versión, a menudo usamos dos comandos:

  1. git reset
  2. git revert

¿Cuál es la diferencia entre estos dos comandos? No se preocupe, lo presentaremos en detalle más adelante.

git reset

Si nuestro sistema ahora tiene los siguientes envíos:

Entre ellos: A y B son presentaciones normales, y C y D son presentaciones incorrectas. Ahora, queremos revertir C y D. En este momento, el puntero HEAD apunta a la presentación D (5lk4er). Solo necesitamos mover el puntero HEAD a la presentación B (a0fvf8) para lograr el objetivo.

Mientras haya amigos basados ​​en git, pensaré en git resetel comando. El comando completo es el siguiente:

git reset --hard a0fvf8

Una vez ejecutado el comando, el puntero HEAD se moverá a la confirmación B, como se muestra a continuación:

En este momento, el puntero HEAD del almacén remoto permanece sin cambios y todavía está en el envío D. Por lo tanto, si utiliza git pushel comando directamente , no podrá enviar cambios al repositorio remoto. En este punto, solo -fla opción de enviar se empujó a la fuerza al repositorio remoto:

git push -f

La desventaja de usar este método para revertir el código es obvia, es decir, hará que el puntero HEAD retroceda, lo que perderá la información de confirmación posterior. En el futuro, si de repente descubres la maravillosa idea que son C y D, hace mucho que desaparecieron en el largo río de la historia.

Además, algunas empresas (como la de Liangxu) prohíben explícitamente el uso del comando git reset para revertir el código por el mismo motivo que el anterior. Por lo tanto, necesitamos encontrar un comando que pueda revertir el código y guardar el envío incorrecto. En este momento, el git revertcomando es útil.

git revert

El papel de git revert es crear una nueva versión haciendo lo contrario. El contenido de esta versión es el mismo que el de la versión de destino a la que queremos revertir, pero el puntero HEAD apunta a esta versión recién generada, no a la versión de destino.

Para usar el comando git revert para implementar el ejemplo anterior, podemos hacer esto: revertir D primero, luego revertir C (si hay varias confirmaciones que deben revertirse, debe revertir de nuevo a antiguo):

git revert 5lk4er
git revert 76sdeb

Aquí se generarán dos nuevas confirmaciones: D'y C ', como se muestra a continuación:

Solo hay dos envíos que deben revertirse y podemos revertir uno por uno. Pero, ¿y si hay decenas? Uno por uno es definitivamente demasiado ineficiente y propenso a errores. Podemos utilizar los siguientes métodos para la reversión por lotes:

git revert OLDER_COMMIT^..NEWER_COMMIT

En este momento, las presentaciones incorrectas C y D aún se conservarán y se seguirán en el futuro cuando se deshaga de la olla. Además, si esta operación, el puntero HEAD se mueve hacia atrás, y puede usarse como git pushun comando para el almacén de empuje remoto. Y este enfoque es exactamente lo que fomentan las empresas.

Pongamos un ejemplo más difícil.

Supongamos que hay tres envíos, pero desafortunadamente, el envío incorrecto está en el medio. Como se muestra abajo:

En este momento, usar directamente el comando git reset para restablecer el puntero HEAD al envío A obviamente no es suficiente, porque el envío C es correcto y debe conservarse. El primer lote B y C envió toda la reversión, luego use el cherry-pickcomando para volver a generar C enviar un nuevo envío C '', por lo que para lograr el compromiso B necesita una reversión. El proceso completo es el siguiente:

Finalmente, recientemente, muchos amigos me pidieron la hoja de ruta de aprendizaje de Linux , así que, según mi experiencia, pasé un mes quedándome despierto hasta tarde en mi tiempo libre y compilé un libro electrónico. Ya sea que esté en una entrevista o en la superación personal, ¡creo que le ayudará! El directorio es el siguiente:

Dáselo a todo el mundo de forma gratuita, ¡solo pídeme que me levantes el pulgar!

Libro electrónico | Hoja de ruta de aprendizaje sobre desarrollo de Linux

¡También espero que algunos amigos se unan a mí para hacer que este libro electrónico sea más perfecto!

¿Ganancia? Espero que los hierros viejos tengan una combinación de tres golpes para que más personas puedan leer este artículo.

Lectura recomendada:

Supongo que te gusta

Origin blog.csdn.net/yychuyu/article/details/108285676
Recomendado
Clasificación