(Mac) -bash: __git_ps1: comando no encontrado

Resuelto Geoff asked hace 12 años • 21 respuestas

Estoy intentando cambiar mi símbolo del sistema en la terminal. Sigo recibiendo el error:

-bash: __git_ps1: command not found

Lo probé simplemente escribiéndolo en la terminal tal como está: __git_ps1. También lo probé en el.bash_profile

if [ -f ~/.git-completion.bash ]; then
  source ~/.git-completion.bash
  export PS1='[\W]$(__git_ps1 "(%s)"): '
fi

Como podrás ver/decir, sí, tengo instalado el autocompletado y ¡funciona muy bien!

Me encontré con esta pregunta: " La variable de entorno de PS1 no funciona en Mac ", que proporciona el código

alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"

Así que lo agrego a mi .bash_profileesperanza de que cambie algo. Bueno, así fue. Simplemente cambió la salida del error.

Aquí está el .bash_profilecon la adición:

alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"

if [ -f ~/.git-completion.bash ]; then
  source ~/.git-completion.bash
  export PS1='[\W]$(__git_ps1 "(%s)"): '
fi

Y ahora aquí está el resultado de error modificado:

sed: (%s): No such file or directory

Nota: También moví el alias debajo de la fuente sin ninguna diferencia. Tengo la versión 1.7.12.1 de git

Este debería ser un cambio simple. ¿Alguien puede ayudarme?

Editar 13/10/12

No, definitivamente no quiero definir __git_ps1 yo mismo, pero solo estaba tratando de ver si sería reconocido al hacerlo. Sí, tengo el .git-completion.basharchivo instalado. Así es como obtuve la finalización automática en mi máquina.

cd ~
curl -OL https://github.com/git/git/raw/master/contrib/completion/git-completion.bash
mv ~/git.completion.bash ~/.git-completion.bash

A ls -laluego enumera el .git-completion.basharchivo.

Geoff avatar Oct 13 '12 14:10 Geoff
Aceptado

Ha instalado la versión de git-completion.bash- masteren el historial de desarrollo de git, esto es después de una confirmación que dividió la __git_ps1función de la funcionalidad de finalización en un nuevo archivo ( git-prompt.sh). La confirmación que introdujo este cambio, que explica el motivo, es af31a456 .

Aún así, te sugeriría que obtengas la versión de git-completion.bash(o git-prompt.sh) que viene incluida con tu instalación de git.

Sin embargo, si por alguna razón aún desea utilizar esta funcionalidad mediante scripts descargados por separado de master, debe descargarlos git-prompt.shde manera similar:

curl -o ~/.git-prompt.sh \
    https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh

... y agregue la siguiente línea a su ~/.bash_profile:

source ~/.git-prompt.sh

Entonces tu PS1variable que incluye __git_ps1 '%s'debería funcionar bien.

Geoff informó el 13/10/12 que agregó lo siguiente a su .bash_profiletrabajo, mientras que otros no lo hicieron:

if [ -f ~/.git-prompt.sh ]; then
  source ~/.git-prompt.sh
  export PS1='Geoff[\W]$(__git_ps1 "(%s)"): '
fi
Mark Longair avatar Oct 13 '2012 07:10 Mark Longair

Después de actualizar a OSX 10.9 Mavericks, tuve que hacer referencia a los siguientes archivos para que el comando git shell se completara y el indicador git volviera a funcionar.

Desde mi .bash_profile o similar:

if [ -f /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash ]; then
    . /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash
fi

source /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh

#shell prompt example
PS1='\u $(__git_ps1 "(%s)")\$ '
haysclark avatar Nov 26 '2013 07:11 haysclark

Debería

$ brew instalar bash bash-completado git

Luego, obtenga "$(brew --prefix)/etc/bash_completion" en su .bashrc.

Steven Shaw avatar Aug 17 '2014 00:08 Steven Shaw

Lo siguiente funcionó para mí de maravilla:

Ejecute lo siguiente en su Terminal:

curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh > ~/.bash_git

Abrir/Crear bash_profile:

$ vi ~/.bash_profile

Agregue lo siguiente al archivo:

source ~/.bash_git
export PS1='\[\033[01;32m\]os \[\033[01;34m\]\w $(__git_ps1 "[%s]")\$\[\033[00m\] '
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWUPSTREAM="auto"

Finalmente, consíguelo usando:

$ source ~/.bash_profile

Esto solucionará el problema de bash: __git_ps1: command not found.

Además, su mensaje cambiará a "os". Para cambiar "os" por otra cosa, modifique la cadena "os" en la línea de exportación de PS1.

Uthman avatar May 06 '2016 19:05 Uthman