242 votes

(Mac) -bash: __git_ps1: commande introuvable

J'essaye de modifier mon promt de commande dans le terminal. Je reçois le message d'erreur:

-bash: __git_ps1: command not found

J'ai essayé juste en tapant dans le terminal: __git_ps1. Je l'ai aussi essayé en .bash_profile

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

Comme vous pourriez être en mesure de voir et dire, oui, je dois l'auto-complétion installé et il fonctionne super!

Je suis tombé sur cette question: "PS1 env variable ne fonctionne pas sur mac " qui donne le code

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

Donc je l'ajoute à ma .bash_profile en espérant que ça va changer quelque chose. Eh bien, il l'a fait. Il a juste changé la sortie d'erreur.

Voici l' .bash_profile avec le plus:

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

Et maintenant, voici la modification de la sortie d'erreur:

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

Note: j'ai aussi déplacé les alias en dessous de la source, sans différence. J'ai de version git 1.7.12.1

Ce doit être un simple changement. Quelqu'un peut-il m'aider?

Edit 10/13/12

Non, je ne voulez certainement pas à définir __git_ps1 moi-même, mais était juste pour essayer de voir si il serait reconnu par le faire. Oui, j'ai l' .git-completion.bash le fichier installé. Voici comment j'ai eu l'auto-complétion sur ma machine.

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

Un ls -la énumère ensuite les .git-completion.bash le fichier.

Edit 10/13/12 - Résolu par la Marque Longair (ci-dessous)

Le code suivant a travaillé pour moi dans l' .bash_profile alors que d'autres n'ont pas...

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

354voto

Mark Longair Points 93104

Vous avez installé la version d' git-completion.bash de master - git le développement de l'histoire c'est après un commit qui a divisé l' __git_ps1 fonction à partir de l'achèvement de la fonctionnalité dans un nouveau fichier (git-prompt.sh). Le commit qui a introduit ce changement, ce qui explique la raison d'être, est af31a456.

Je serais toujours penser que vous venez de source de la version de git-completion.bash (ou git-prompt.sh) qui est fourni avec votre installation de git.

Toutefois, si pour une raison quelconque vous souhaitez utiliser cette fonctionnalité à l'aide de scripts téléchargé séparément à partir d' master, vous devez télécharger git-prompt.sh de même:

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

... et ajouter la ligne suivante à votre ~/.bash_profile:

source ~/.git-prompt.sh

Ensuite, votre PS1 variable qui inclut __git_ps1 '%s' devrait fonctionner correctement.

60voto

Infinite Points 401

Après la mise à niveau vers OSX 10.9 Mavericks, j'ai dû faire référence aux fichiers suivants pour que la fin de la commande git shell et l'invite git fonctionnent à nouveau.

De mon fichier .bash_profile ou similaire:

 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)")\$ '
 

43voto

Steven Shaw Points 474

Vous devriez

$ brew installer bash-completion git

Cette source "$ (brew --prefix) / etc / bash_completion" dans votre fichier .profile.

4voto

traday Points 469

__git_ps1 pour bash se trouve maintenant dans git-prompt.sh dans /usr/local/etc/bash_completion.d sur ma version de git installée 1.8.1.5

1voto

op1ekun Points 1236

Je sais que c'est pas une vraie réponse...

J'ai eu de drôles de questions avec de sourcing git-prompt.sh dans mon .bashrc j'ai donc commencé à chercher d'autres solutions. Celui-ci: http://www.jqno.nl/post/2012/04/02/howto-display-the-current-git-branch-in-your-prompt/ ne pas utiliser d' __git_ps1 et auteur affirme qu'il fonctionne aussi sur Mac (pour l'instant il fonctionne parfaitement sur mon Ubuntu et il est facile à ajuster).

J'espère que cela aide!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X