example ejemplo and all windows git bash prompt

windows - and - git commit ejemplo



¿Dónde se define exactamente el indicador de Git Bash para Windows? (3)

Tanto la computadora de mi oficina como la de mi hogar tienen Git Bash para Windows de la misma fuente (Git para Windows, que vino con TortoiseGit), pero el indicador de Git Bash difiere en ambas máquinas:

  • en la computadora de la oficina tengo /c/path (branch) todo verde (esto es, cómo me gustaría que tuviera),
  • En la computadora de la casa solo tengo ruta (ninguna rama) y todo blanco.

Hasta ahora me dijeron que esta es una variable de PS1 , mantenida en el archivo ~/.bashrc . Sin embargo, en ambas máquinas, faltan estos archivos (al ejecutar el notepad ~/.bashrc abre el Bloc de notas vacío).

Estoy perdido aquí. Si ~/.bashrc no existe, entonces ¿desde dónde Git Bash "sabe", que debería mostrar la rama actual, en un indicador verde? ¿Y por qué no sucede lo mismo en la segunda máquina?

EDITAR : También intenté comparar el contenido de la carpeta c:/Program Files/Git/etc/ para las máquinas y el contenido del archivo Git Bash.vbs . Hay idénticas en ambas computadoras, así que aún no tengo idea, cómo puede ser, que el mensaje de Git Bash difiere en ambas computadoras (y cómo solucionarlo).

Varias respuestas (como this , this y this ) me han sugerido que debería buscar los archivos .bash_profile y .bash_prompt . Desafortunadamente, estos dos también faltan en mis dos computadoras.

¿Exactamente qué archivo decide sobre eso en Windows 7? ¿Dónde más debería buscar, y cuál debería ser el valor de la variable PS1 , para que la rama actual se muestre en verde en ambas máquinas?


En mi Windows10, "__git_ps1" se define en: C: / Archivos de programa / Git / etc / profile.d / git-prompt.sh


Git en Windows casi siempre usa un shell bash. Por lo tanto, no es Git el que configura el indicador tanto como Bash.

Hay dos formas de configurar las solicitudes en Bash. Uno es el comando PS1 que es bastante flexible, pero está limitado a un conjunto particular de secuencias de caracteres de escape. Desafortunadamente, la información de Git no es una de esas secuencias de escape (aunque sospecho que llegará algún día). Puede utilizar la segunda forma de configurar la solicitud configurando la variable de entorno PROMPT_COMMAND . Si se establece esto, $PROMPT_COMMAND se ejecuta y se utiliza como indicador en lugar de la variable de entorno PS1 .

Cuando instala el Git estándar con BASH, su solicitud de Git se define en el /etc/profile . Por cierto, etc es un directorio en el que ha instalado Git, que generalmente está en %PROGRAMFILES% menos que lo haya cambiado al instalar Git.

En la secuencia de comandos /etc/profile en la línea # 156 en mi versión, ve que el comando PS1 está configurando y está usando $(__git_ps1) en $PS1 como un medio para ejecutar un comando externo en el indicador. (Una tercera forma no mencioné anteriormente).

El __git_ps1 es una función de shell. También notará un poco más arriba (línea # 154 en mi versión) que /etc/git-completion.bash está /etc/git-completion.bash , así como /etc/git-prompt.sh . Es /etc/git-prompt.sh que define la función __git_ps1 (línea # 273 en mi versión) está definida. Notará que la función __git_ps1 otras funciones definidas en /etc/git-prompt.sh .

Entonces, de una manera muy Rube Goldberg, el indicador de Git se define en /etc/profile mediante la definición de $PS1 que /etc/git-prompt.sh que define una función __git_ps1 que __git_ps1_show_upstream función __git_ps1_show_upstream y la función __git_ps1_colorize_gitstring . Luego, $PS1 utiliza la cadena $(...) como parte de la función __git_ps1 en PS1 .

Puede definir su propio $HOME/.bash_profile para anular la forma en que se configura la solicitud para definir su propia solicitud. Y, cuando haces eso, también puedes usar la función __git_ps1 Bash en tu propio mensaje.

O, simplemente puede decidir no tocar nada, y simplemente retroceder muy lentamente. Después de todo, es posible que tenga trabajo real para hacer.


Haría un comentario si tuviera suficiente reputación,

pero mi conjetura es que el bashrc no está en su carpeta de inicio: ~ / pero en la carpeta para todos los usuarios o en general (no sé cómo se llama exactamente). Busque en sus usuarios donde se encuentran todos los usuarios y busque .bashrc.

Mire aquí: C: / Users / Todos los usuarios o: C: / Users / Usuario predeterminado