2010-10-13 9 views
40

Tengo la configuración de Git para Windows (msysgit) y funcionó bien durante los últimos días y hoy he encontrado un error extraño.El símbolo del sistema de Windows Git se atasca durante los comandos de Git con (END)

Al emitir un comando Git en el símbolo del sistema de Windows o en el Git Bash que viene incluido con msysgit, aparece una línea extraña '(END)' y luego no puedo emitir otras comandas.

alt text

En este punto, todo lo que consigo son emitirá un sonido.

¿Alguna idea?

Gracias, P.

Respuesta

68

Git quiere mostrar más de una pantalla de información a usted, para hacer lo que llaman el programa localizador de Unix estándar less. Simplemente escriba q para regresar al mensaje cuando ya no desee navegar en la salida.

  • j mover una línea hacia abajo
  • k movimiento una línea hacia arriba
  • <espacio> movimiento una página abajo
  • b movimiento una página hacia arriba
  • h muestra la ayuda

Si desea utilizar git de manera eficiente, debe aprender las herramientas básicas de Unix. Incluso si git compila y ejecuta en Windows, es prácticamente un software alienígena en la plataforma.

Si no desea less, simplemente sustitúyalo por otro buscapersonas en la configuración. Si no desea que un localizador en absoluto sólo tiene que utilizar cat:

git config --global --add core.pager cat 
+0

Gracias por la información adicional. – paperclip

+3

+1 Para intercambiar 'less' con' cat'. ¡No es que alguna vez quiera hacer eso! – Skilldrick

+0

También podría usar 'más' en lugar de' menos'. – dave1010

11

Prensa q para salir del pager (que es less en git por defecto).

+0

¿Es posible evitar que Git haga esto? – paperclip

+2

@paperclip ¿Por qué querrías? Muy pronto tendrá que recorrer los resultados; recién ahora, cuando comience, solo obtendrá una página. Solo acostúmbrate a presionar 'q'. – Skilldrick

+0

Gracias por la sugerencia. – paperclip

9

Me encontré por primera vez con esta pregunta cuando estaba buscando lo mismo; no tener que salir del comando de registro. Desde entonces, he encontrado la respuesta que me gusta, por lo que, aunque es bastante posterior a la solicitud original, agregaré esta respuesta para proporcionar una solución adicional que no encontré rápidamente en mi propia búsqueda.

Otros han declarado por qué el (END) está presente: los resultados se canalizan a través de un buscapersonas, que se puede configurar para un buscapersonas diferente.

Sin embargo, a veces no quiero que pare en absoluto; porque he especificado otras opciones que limitan. Encontré que para este git has a global option--no-pager para desactivar el buscapersonas se define en el archivo de configuración.

Esta opción global está en el comando git en sí, está disponible para todos los subcomandos y se coloca antes del subcomando así:

git --no-pager log 
+0

Una nota útil. Gracias. – paperclip

1

Git está utilizando el "localizador" llamada less, lo que le permite desplazarse a través de una gran cantidad de salida del programa fácilmente. Sin embargo, la configuración predeterminada en Git para Windows parece ser mantener el buscapersonas funcionando incluso cuando hay menos de una pantalla de salida.

Aquí es el valor predeterminado que tenía antes, que siempre mostraría la (END) y esperar a que golpear q antes de regresar a su pronta:

$ git config --get core.pager 
less -+F 

Puede cambiar el comportamiento de modo que less sólo se siga funcionando (y tome el control del teclado) cuando haya más de una pantalla de salida cambiando la opción a -F en lugar de -+F.

Fijar el buscapersonas molestos con

$ git config --global core.pager "less -F" 

(La sintaxis -+X opción por menos se documenta para restablecer la opción -X a su "defecto", aunque eso no es el comportamiento que observé con -+F ya que la remoción la opción en conjunto fue equivalente a -F, no a -+F.)

Cuestiones relacionadas