Acabo de actualizar a magit 2.1.0. (Y también a emacs 25.0.50 y git 2.3.1.)
Anteriormente, en el *magit*
búfer pude:
- Seleccione un trozo en el área Sin clasificar.
- Escriba vy responda sí para revertirlo.
Esto fue útil.
Pero ahora en Magit 2.1.0 se da un error: "Cannot reverse unstaged changes"
.
¿Por qué?
Tomando una pista del mensaje de error, descubrí que aún puedo hacer esto, aunque de una manera algo "al revés" con más pasos:
- sTage el trozo. (Se siente hacia atrás; acercándolo al estado comprometido).
- Navegue hacia abajo y selecciónelo en el área por etapas.
- Presione v, responda sí.
- Sin embargo, el trozo todavía está en escena, así que finalmente tengo que poner en uescena el trozo.
¿Es esto un error, o es intencional y / o estoy siendo denso? Si es esto último, ¿puedes ayudarme a entender?
ACTUALIZACIÓN: Después de exhaustivamente RTFinfo, veo que hay dos comandos:
- v
magit-reverse
Invierta el cambio en el punto del árbol de trabajo. - k
magit-discard
Elimine el cambio en el punto del árbol de trabajo.
Parece que k magit-discard
hace lo que estaba acostumbrado a vhacer antes. Funciona en un trozo sin escena.
Así que prácticamente solo necesito volver a entrenar mi memoria muscular para usar k. Podría publicar eso como una respuesta propia. Pero supongo que todavía tengo curiosidad sobre el fundamento, porque imagino que comprenderlo me ayudará a comprender mejor el talento en general.
k
descarta un cambio no comprometido en versiones anteriores de magit también, y parece el comando apropiado para lo que está haciendo.v
es para git revert: crear una nueva confirmación que realiza el cambio opuesto a uno anterior. Supongo que revertir un cambio que no se ha confirmado es lo mismo que descartarlo, pero 'revertir' tiene un significado específico como un comando git.v
estaba vinculado amagit-revert-item
(la terminología "inversa" viene de allí, @PythonNut) y para los elementos no organizados esto solía hacer unmagit-discard-item
(como también vinculado ak
) - vea la línea 4872 aquí . Aparentemente, accidentalmente aprendí ese significado especial dev
, que funcionó, cuando debería haber aprendido a usark
.Respuestas:
Magit implementa cinco "variantes de aplicación" descritas en el manual : etapa, unstage, "aplicación regular", descartar e invertir. Los primeros tres deberían ser bastante obvios para la mayoría de los usuarios de Git. Los dos últimos no existen en la porcelana Git (en Magit se implementan utilizando comandos de fontanería Git y Emacs Lisp).
Estas dos variantes se describen así:
Estas dos variantes hacen cosas muy diferentes, por lo que ninguna de estas variantes debería recurrir a la otra variante en los casos en que no se pueda utilizar. Mantener el comportamiento anterior (de retroceder de reverso a descarte en algunos contextos) podría haber sido más conveniente a corto plazo, pero a largo plazo evita que los usuarios realmente intenten comprender para qué sirven estas dos variantes.
Descartar es mucho más peligroso que revertir . El primero "desecha los cambios no confirmados" (estos cambios se pierden, ya no están en ninguna parte), mientras que el segundo en realidad "crea cambios", al tomar un cambio anterior y hacer lo contrario en el árbol de trabajo (el cambio anterior no se pierde, todavía está en una confirmación o el índice).
Retroceder de "crear" a "eliminar" es muy peligroso, por lo que Magit ya no hace eso.
También tenga en cuenta que al usar los nuevos modos wip puede protegerse de la pérdida de cambios debido a un descarte accidental.
fuente
Parece que accidentalmente aprendí que v, sin duda
magit-revert-item
, solía hacer algomagit-discard-item
en este caso especial de trozos sin escena. Vea el<=== HERE ===
comentario que pongo a continuación:Fuente: código 1.4.2 .
Pero ahora eso no sucede:
Fuente: maestro :
Sin embargo, kestá vinculado directamente a
magit-discard-item
. Debería haber aprendido a usar eso en primer lugar. Eso funcionó antes de 2.1.0, y aún funciona.En conclusión, magit 2.1.0 ha sido significativamente rediseñado. Es inevitable que algunos casos extraños en las esquinas no hayan sobrevivido. Y, estoy de acuerdo, no necesito haber sobrevivido. Volveré a aprender la llave.
fuente