emacs git-diff magit

emacs - ¿Cómo puedo diferenciar un solo archivo con Magit?



git-diff (3)

Definitivamente, hay ventajas de no ir en contra del grano cuando se usan herramientas, como lo ejemplifican las otras respuestas.

Por otro lado, a veces solo quiere decirle a su editor qué hacer y hacer que la gente en Internet responda sus preguntas en lugar de decirle que quiere hacer otra cosa.

magit proporciona una interfaz de menú para hacer cosas al archivo actual a través de Mx magit-file-popup . Las teclas que necesitas presionar desde aquí son "du". Esto puede ser demasiadas pulsaciones de teclas para usted, si este es el caso, puede llamar a magit-diff directamente de magit-diff forma:

(magit-diff "master" nil (list buffer-file-name))

Es posible que desee definir su propia función y combinación de teclas para esto.

magit-diff tiene ventajas sobre vc-diff porque si te permite saltar a la ubicación del diff.

Digamos que he realizado una serie de cambios no relacionados a los archivos no acoplados en mi repositorio git. Quiero revisar y confirmar cada uno de los archivos por separado.

magit-status y obtengo una lista de archivos modificados. Pero los únicos comandos de magit diff que puedo encontrar ( d y D ) dif son revisones completos, no archivos individuales.

Quiero la salida de git diff <filename> , pero en el búfer magit diff. ¿Cómo puedo hacer que Magit difiera solo un archivo?


Magit le permite "revisar y confirmar cada uno de los archivos por separado" directamente desde el magit-status , sin la necesidad de búferes de diferencia separados.

Simplemente expande los archivos en los que está interesado (con TAB , que le muestra la diferencia del archivo en el punto); luego puede organizar los bits de la misma que desee confirmar (ya sea todo el archivo o fragmentos individuales, o incluso una región marcada) con s para poner en escena (o u para anular el escenario). Repita para todos los cambios involucrados en ese compromiso y, una vez que todo lo necesario haya sido preparado, presione c para comenzar el compromiso.

nb Si realmente desea ver el diff de un archivo en un búfer separado, puede usar vc-diff enlazado a Cx v = en el búfer de ese archivo. (nb esa es la funcionalidad predeterminada en Emacs; no es parte de Magit).

(edit: respuesta reescrita a causa del comentario de aap, que ahora parece decir lo contrario de lo que significaba en ese momento).


Recomiendo ver el video del creador de magit. Son 20 minutos y le muestra el flujo de trabajo tal como estaba previsto.

Además, un pequeño consejo: puede usar 1 2 3 para cambiar la verbosidad de la diferencia del encabezado actual.

Otro pequeño consejo: si no está satisfecho con el tamaño de los hunks, puede organizar regiones arbitrarias marcando una región y presionando s . Es magia. No conocía esta opción por un tiempo, en realidad estaba volviendo a la consola y haciendo git add -p la manera tradicional.