¿Cómo usar Magit aún más eficazmente?

Después de una testing de varias horas con Git usando Shell, cambié a Magit

Es bastante limpio y eficiente: ¡ya no necesito escribir "git" para invocar un command git!

Pero todavía encontré una desventaja al comparar la command-line de la shell

Cada vez que escribía : para invocar el command git, la salida aparecía en la otra window. Tuve que escribir Cx o para volver y escribir el command git nuevamente.

¿Hay alguna forma mejor de seguir escribiendo y ver en la salida al mismo time que el modo de shell en emacs?

¿Debería volver a enlazar la salida a algún otro modo? ¿cúal? o una solución más elegante?

Muchas gracias

Estoy de acuerdo con Brian, ¿qué intentas hacer que un mago no pueda hacer a través de un simple disparador de llave? Probablemente ya tenga un enlace de key. Si no, simplemente Cz para soltar el shell y ejecutar el command, luego fg para traer emacs nuevamente en primer plano.

Editar: mi flujo es así.

  1. Comienzo el día en el trabajo. git diff en la command-line solo para ver si tengo algún cambio no confirmado del día anterior (¡no olvides activar los colors !) La razón por la que hago esto en la línea de command como apostar a mago es porque no estoy en emacs todavía.
  2. O abro los files sin procesar en emacs emacs file1 file2 o abro algunos files en los que estoy a punto de trabajar.
  3. Codigo hasta que haya corregido un error o terminado una nueva característica.
  4. En emacs escribo Cc i para abrir la window de estado de Magit.
  5. Me desploop hacia abajo a la sección de Cambios y al lado de cada file, presiono la pestaña para ver una diferencia de cada cambio. O presiono s para llevar a cabo esos cambios o tú para dejar de grabar esos cambios.
  6. Opcionalmente, puedo mirar a través del código diffs y hacer lo mismo syu para escenificar y separar secciones del código. Útil si tengo algún código de debugging en algún lugar y quiero matarlo.
  7. Después de confirmar que todos mis cambios se ven bien y están organizados, escribo c para abrir el magit-edit-log. Escribo mi post de confirmación y luego Cc Cc para confirmarlo. Entonces P para empujarlo. ¡Hecho!

Tenga en count que esto suena como una gran cantidad de pasos, pero se vuelve rápidamente natural y todo el process, literalmente, toma 30 segundos para mí para diferir todo mi set de cambios, escenificarlos y enviarlos con un post. Todo mientras te quedas en Emacs. Mucho más fácil que bajar a la línea de command.

A veces se devuelve un error cuando hago un push a través de Magit generalmente causado por un nuevo código en el repository remoto que tengo que extraer antes de presionar. En este caso F para tirar de los cambios, luego P nuevamente para empujar. Honestamente, por alguna razón, en vez de atravesar a los magos, en general solo Ctrl-z en esta situación, despliego a shell, git pull y git push .

Edición: creo recordar que los colors de diferencia pnetworkingeterminados de Magit son bastante atroces. Uso lo siguiente en mi .emacs Estoy seguro de que robé de alguna parte:

 ;; change magit diff colors (eval-after-load 'magit '(progn (set-face-foreground 'magit-diff-add "green3") (set-face-foreground 'magit-diff-del "networking3") (when (not window-system) (set-face-background 'magit-item-highlight "black")))) (add-to-list 'auto-mode-alist '("COMMIT_EDITMSG$" . diff-mode)) (eval-after-load 'diff-mode '(progn (set-face-foreground 'diff-added "green4") (set-face-foreground 'diff-removed "networking3"))) 

Usualmente uso los commands integrados de Magit para la mayoría de mi trabajo cuando estoy usando Magit, y simplemente uso un terminal regular cuando necesito hacer cosas que no puedo hacer desde los commands integrados de Magit. Magit ha incorporado commands para casi todo mi uso diario; ¿Qué estás usando regularmente que Magit no proporciona y de todos modos no estarías haciendo en una terminal de pleno derecho?

Un consejo sobre magit-run* resuelve esto. Podría interrumpir otras llamadas a magit-run* , no lo magit-run* más …

 (defadvice magit-run* (around stay-in-magit activate) (flet ((pop-to-buffer (buf &optional act rec) (display-buffer buf act))) ad-do-it))