web-dev-qa-db-fra.com

(Mac) -bash: __git_ps1: commande non trouvée

J'essaie de changer mon ordre de commande dans le terminal. Je continue à avoir l'erreur:

-bash: __git_ps1: command not found

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

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

Comme vous pourrez peut-être voir/dire, oui, l'auto-complétion est installée et cela fonctionne très bien!

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

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

Je l’ajoute donc à mon .bash_profile en espérant que cela changera quelque chose. Eh bien, il l'a fait. Il vient de changer la sortie d'erreur.

Voici le .bash_profile avec l'ajout:

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 sortie d'erreur modifiée:

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

Note: _ J'ai également déplacé le pseudonyme sous la source sans aucune différence. J'ai version git 1.7.12.1

Cela devrait être un simple changement. Quelqu'un peut-il m'aider s'il vous plaît?

Edit 10/13/12

Non, je ne veux certainement pas définir __git_ps1 moi-même, mais j'essayais simplement de voir si cela serait reconnu. Oui, j'ai le fichier .git-completion.bash installé. Voici comment j'ai obtenu 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

ls -la liste ensuite le fichier .git-completion.bash.

Edit 10/13/12 - Résolu par Mark Longair _ (ci-dessous)

Le code suivant a fonctionné pour moi dans le .bash_profile alors que d'autres ne l'ont pas ...

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

Vous avez installé la version de git-completion.bash à partir de master - dans l'historique de développement de git, ceci est après un commit qui sépare la fonction __git_ps1 de la fonctionnalité d'achèvement dans un nouveau fichier (git-Prompt.sh). L'engagement qui a introduit ce changement, ce qui explique la raison, est af31a456 .

Je suggérerais toujours que vous sourcez simplement la version de git-completion.bash (ou git-Prompt.sh) fournie avec votre installation de git.

Toutefois, si, pour une raison quelconque, vous souhaitez toujours utiliser cette fonctionnalité en utilisant des scripts téléchargés séparément à partir de master, vous devez télécharger git-Prompt.sh de la même manière:

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

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

source ~/.git-Prompt.sh

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

282
Mark Longair

Après la mise à niveau vers OSX 10.9 Mavericks, je devais faire référence aux fichiers suivants pour que la commande git soit terminée et que git Prompt fonctionne à nouveau.

De mon .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)")\$ '
57
haysclark

Vous devriez

$ brasser installe bash bash-complétion git

Puis, source "$ (brew --prefix)/etc/bash_completion" dans votre .bashrc.

34
Steven Shaw

La suite a fonctionné pour moi comme un charme:

Exécutez ensuite dans votre terminal:

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

Ouvrir/créer bash_profile:

$ vi ~/.bash_profile

Ajouter ce qui suit au fichier:

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"

Enfin, sourcez le en utilisant:

$ source ~/.bash_profile

Cela résoudra le problème de bash: __git_ps1: command not found.

De plus, votre invite deviendra "os". Pour remplacer "os" par autre chose, modifiez la chaîne "os" dans la ligne d'exportation PS1. 

12
Undefined

Solution pour MacOS Sierra et git version 2.10.1 <2017-2-06>

Étape 1: Installez le Git

Vous pouvez ignorer cette étape si vous avez déjà installé le dernier git.

Téléchargez le paquet git à partir du navigateur https://git-scm.com/download/

Remarque: si vous installez avec l'option curl [option] https://... à télécharger, vous devez vous assurer que votre système prend en charge SSL. Pour les nouveaux venus, télécharger depuis le navigateur et installer directement à partir du programme d'installation de git est beaucoup plus facile.

  • Montre où est ton répertoire git à: which git 
  • Montrez quelle version de votre git est actuellement: git --version la version actuelle devrait être 2.10.1. 

Étape 2: Ajoutez votre profil git à votre shell

  1. Ouvrez votre profil Shell:
    • nano ~/.bash_profile ou nano ~/.bashrc Dépend de l'endroit où se trouve votre modification.
  2. Ajoutez le code suivant au fichier:
    • source /usr/local/git/contrib/completion/git-completion.bash
    • source /usr/local/git/contrib/completion/git-Prompt.sh

Remarque: l'emplacement d'installation de git est passé de opt/directory à usr/local/après la mise à niveau OSX vers El Capitain. C'est pourquoi une partie de l'ancienne réponse ci-dessus ne fonctionne plus dans MacOS Sierra.

  1. Ajoutez le code suivant à votre configuration PS1: 

    • Option 1: ajoutez directement à votre PS1: export PS1='\w$(__git_ps1 "(%s)") > '

      Je préfère cette approche simple car je sais déjà que le .git-completion.bash est présent dans mon répertoire personnel et que je peux ajouter un autre format Prompt au premier plan. voici mon invite personnel pour votre référence: export PS1='\t H#\! \u:\w$(__git_ps1 "{%s}") -->> '
    • Option 2: Ajouter un script de sélection

    si [-f ~/.git-completion.bash]; puis
     export PS1 = '\ w $ (__ git_ps1 "(% s)")>' 
     fi
  2. Enregistrez et utilisez le profil: source ~/.bash_profile ou source ~/.bashrc

7
frzhen

J'ai eu le même problème lors de la mise à niveau vers Yosemite.

Il me suffisait de modifier ~/.bashrc en source /usr/local/etc/bash_completion.d/git-Prompt.sh au lieu de l'ancien chemin.

puis re-source votre . ~/.bashrc pour obtenir l'effet.

5
chovy

__git_ps1 pour bash se trouve maintenant dans git-Prompt.sh dans /usr/local/etc/bash_completion.d sur mon serveur installé git version 1.8.1.5

4
traday

High Sierra solution propre avec des couleurs!

Aucun téléchargement. Pas de bière. Aucun Xcode

Ajoutez-le simplement à votre ~/.bashrc ou ~/.bash_profile

export CLICOLOR=1
[ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-Prompt.sh ] && . /Library/Developer/CommandLineTools/usr/share/git-core/git-Prompt.sh
export GIT_PS1_SHOWCOLORHINTS=1
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWUPSTREAM="auto"
Prompt_COMMAND='__git_ps1 "\h:\W \u" "\\\$ "'
2
luzik

Si vous souhaitez utiliser Homebrew pour mettre à niveau Git et que votre système devient obsolète en général (comme je l'ai fait), vous devrez peut-être mettre à jour Homebrew lui-même en premier lieu (selon Mise à jour de la bière: les fichiers d’arbre de travail non suivis suivants seraient écrasés par la fusion: thanks @ chris-frisina)

Commencez par mettre Homebrew en conformité avec la version actuelle

cd/usr/local
git chercher l'origine
Réinitialisation git - Hard Origin/master

Puis mettez à jour Git:

brassage git mise à niveau

Problème résolu! ;-)

2

cela fonctionne dans OS 10.8 dans le fichier .bash_profile 

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

Au moins avec Xcode 6, vous avez déjà git-completion.bash. C'est à l'intérieur du bundle d'applications Xcode.

Ajoutez simplement ceci à votre .bashrc:

source `xcode-select -p`/usr/share/git-core/git-completion.bash
2
jrc

Pour macports je devais ajouter: source /opt/local/share/git-core/git-Prompt.sh à mon ./profile

2
velop
  1. Téléchargez les fichiers git-Prompt.sh et git-completion.bash à partir de ce Git Achèvement
  2. Renommez les fichiers.
  3. Déplacez ces fichiers dans votre répertoire personnel.
  4. Ajouter le fichier source dans le fichier .bash_profile

    source ~/git-completion0.bash
    source ~/git-Prompt0.sh
    and four to trigger the code block.
    
1
JCLopez

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

J'ai eu quelques problèmes étranges avec le sourcing de git-Prompt.sh dans mon .bashrc, alors j'ai commencé à chercher une autre solution. Celui-ci: http://www.jqno.nl/post/2012/04/02/howto-display-the-current-git-branch-in-your-Prompt/ n'utilise pas __git_ps1 et l'auteur affirme que cela fonctionne aussi sur Mac (pour l’instant, cela fonctionne parfaitement sur mon Ubuntu et il est facile de modifier).

J'espère que ça aide!

1
op1ekun

Je faisais le cours sur Udacity pour git hub et j'avais le même problème. Voici mon code final qui fait que ça marche correctement. 

# Change command Prompt
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

source ~/.git-Prompt.sh
export GIT_PS1_SHOWDIRTYSTATE=1
# '\u' adds the name of the current user to the Prompt
# '\$(__git_ps1)' adds git-related stuff
# '\W' adds the name of the current directory
export PS1="$purple\u$green\$(__git_ps1)$blue \W $ $reset"

Cela fonctionne! https://i.stack.imgur.com/d0lvb.jpg

1
superheron

Pour git, il y a /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-Prompt.sh. Et s'il vous plaît regardez /etc/bashrc_Apple_Terminal aussi.

Alors, je mets ça dans ~/.bash_profile:

if [ -f /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-Prompt.sh ]; then
  . /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-Prompt.sh
  export GIT_PS1_SHOWCOLORHINTS=1
  export GIT_PS1_SHOWDIRTYSTATE=1
  Prompt_COMMAND="${Prompt_COMMAND:+$Prompt_COMMAND; }__git_ps1 '\u:\w' '\\\$ '"
fi
0
liudongmiao

Celui-ci a fonctionné pour moi, et il a coloré la sortie git et un indicateur dans l'invite si des fichiers ont été modifiés/ajoutés, cuits à droite dedans:

GIT_PS1_SHOWDIRTYSTATE=true

. /usr/local/Cellar/git/1.8.5.2/etc/bash_completion.d/git-completion.bash
. /usr/local/Cellar/git/1.8.5.2/etc/bash_completion.d/git-Prompt.sh

PS1='\[\033[32m\]\u@\h\[\033[00m\]:\[\033[34m\]\w\[\033[31m\]$(__git_ps1)\[\033[00m\]\$ '

Assurez-vous d'utiliser le bon chemin! J'ai utilisé homebrew pour installer git, utilisez brew list git pour obtenir le chemin de votre installation actuelle.

Serait bien de ne pas utiliser un chemin codé en dur, mais je ne sais pas comment obtenir le chemin de l'installation actuelle.

Plus d'infos ici: http://fr.newinstance.it/2010/05/23/git-autocompletion-and-enhanced-bash-Prompt/

0
Joshua Muheim