(Mac) -bash: git ps1: commande introuvable

j'essaye de changer mon promt de commande dans le terminal. Je n'arrête pas de recevoir l'erreur:

-bash: __git_ps1: command not found

j'ai essayé juste en tapant dans le terminal: __git_ps1 . J'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 pourriez être en mesure de voir/dire, oui, j'ai l'auto-completion installé et il fonctionne très bien!

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/* (.*)/()/'"

donc je l'ajoute à mon .bash_profile en espérant qu'il va changer 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/* (.*)/()/'"

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 aussi déplacé l'alias au-dessous de 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?

Modifier 10/13/12

Non, Je ne veux certainement pas définir_ _ git _ ps1 moi-même mais était juste essayer de voir si elle serait reconnue par de le faire. Oui, j'ai installé le fichier .git-completion.bash . Voilà comment j'ai eu l'auto completion 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

A ls -la affiche alors le fichier .git-completion.bash .

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

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

if [ -f ~/.git-prompt.sh ]; then
  source ~/.git-prompt.sh
  export PS1='Geoff[W]$(__git_ps1 "(%s)"): '
fi
187
demandé sur Community 2012-10-13 11:20:43

17 réponses

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

je suggérerais encore que vous juste la source de la version de git-completion.bash (ou git-prompt.sh ) qui est livré avec votre installation de git.

cependant, si pour une raison quelconque vous voulez toujours utiliser cette fonctionnalité en utilisant des scripts téléchargés séparément de 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

alors votre PS1 variable qui inclut __git_ps1 '%s' devrait fonctionner très bien.

272
répondu Mark Longair 2014-06-16 21:43:54

après la mise à niveau vers OSX 10.9 Mavericks, j'ai dû faire référence aux fichiers suivants pour obtenir git shell command completion et git prompt to work again.

de my .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
répondu haysclark 2013-11-26 07:45:36

Vous devriez

$ brew install bash bash-completion git

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

32
répondu Steven Shaw 2016-12-23 00:39:15

suivant travaillé pour moi comme un charme:

suivre 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='\[3[01;32m\]os \[3[01;34m\]\w $(__git_ps1 "[%s]")$\[3[00m\] '
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWUPSTREAM="auto"

enfin, la source en utilisant:

$ source ~/.bash_profile

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

aussi votre invite va changer en "os". Pour changer "os" en quelque chose sinon, Modifiez la chaîne "os"dans la ligne export PS1.

12
répondu Undefined 2016-05-06 19:00:44

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

Étape 1: Installer le Git

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

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

Note: Si vous installez avec l'option curl [option] https://... pour télécharger, vous devez assurez-vous que votre système prend en charge SSL. Donc pour new comer, télécharger à partir du navigateur et installer directement à partir de Git installer est beaucoup plus facile.

Vérification De L'Installation:
  • Montrer où est votre répertoire git: which git
  • montre quelle version de votre git est actuellement: git --version la version actuelle devrait être 2.10.1.

Étape 2: ajouter votre profil git à votre shell

  1. ouvrir votre profil shell:
    • nano ~/.bash_profile ou nano ~/.bashrc dépend de votre modification.
  2. ajouter le code suivant au fichier:
    • source /usr/local/git/contrib/completion/git-completion.bash
    • source /usr/local/git/contrib/completion/git-prompt.sh

Note: l'emplacement de l'installation de git a changé d'opt/ directory à usr/local/ après la mise à niveau D'OSX à El Capitain, et c'est pourquoi une partie de l'ancienne réponse ci-dessus ne fonctionne plus dans MacOS Sierra.

  1. ajouter le code suivant à votre configuration PS1:

    • Option 1: ajouter 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 je peux ajouter un autre format prompt au début de celui-ci. voici mon invite personnelle pour votre référence: export PS1='\t H#\! \u:\w$(__git_ps1 "{%s}") -->> '
    • Option 2: Ajouter un script de sélection

    if [ -f ~/.git-completion.bash ]; then
          export PS1='\w$(__git_ps1 "(%s)") > '
    fi
  2. Sauvegardez et utilisez le profil: source ~/.bash_profile ou source ~/.bashrc

Maintenant, vous pouvez voir l'invite git fonctionne correctement et montre dans quelle branche vous êtes en ce moment.
7
répondu frzhen 2017-02-06 08:12:28

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

j'ai juste dû modifier ~/.bashrc en source /usr/local/etc/bash_completion.d/git-prompt.sh au lieu de l'ancien chemin.

puis réimprimer votre . ~/.bashrc pour obtenir l'effet.

5
répondu chovy 2015-04-13 23:28:27

_ _ _ git _ ps1 pour bash se trouve maintenant dans git-prompt.sh in/usr/local/etc / bash_completion.d sur mon brew installé Git version 1.8.1.5

4
répondu traday 2013-03-06 17:13:47

cela fonctionne sur les OS 10.8 dans le .bash_profile

if [ -f ~/.git-prompt.sh ]; then
  source ~/.git-prompt.sh
  export PS1='YOURNAME[\W]$(__git_ps1 "(%s)"): '
fi
2
répondu slozier 2013-11-01 17:28:10

pour macports j'ai dû ajouter: source /opt/local/share/git-core/git-prompt.sh à mon ./ profile

2
répondu velop 2014-05-14 15:33:48

si vous espérez utiliser Homebrew pour mettre à niveau Git et que vous avez laissé votre système devenir obsolète en général (comme je l'ai fait), vous pouvez avoir besoin D'apporter Homebrew lui-même up-to-date d'abord (selon brew mise à jour: les fichiers d'arbre de travail suivants non tracés seraient écrasés par fusion: merci @chris-frisina)

première mise en conformité avec la version actuelle

cd / usr / local

git fetch origin

git reset --hard origin /master

puis mettre à jour Git:

brasser de la mise à niveau git

Problème Résolu! ;- )

2
répondu Day Davis Waterbury 2017-05-23 12:03:05

au moins avec Xcode 6, Vous avez déjà git-completion.bash . C'est dans le paquet d'Applications Xcode.

ajoutez ceci à votre .bashrc:

source `xcode-select -p`/usr/share/git-core/git-completion.bash
2
répondu jrc 2015-08-16 14:56:06

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

j'ai eu quelques problèmes étranges avec l'approvisionnement git-prompt.sh dans la mienne .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 qu'il fonctionne aussi sur Mac (pour l'instant, il fonctionne parfaitement sur mon Ubuntu et il est facile à modifier).

j'espère que cela aide!

1
répondu op1ekun 2013-08-21 08:30:09

je faisais le cours sur Udacity pour git hub et j'avais ce même problème. Voici mon code final qui fonctionne correctement.

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

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"

ça marche! https://i.stack.imgur.com/d0lvb.jpg

1
répondu superheron 2017-02-12 13:44:00

haute Sierra solution propre avec des couleurs !

pas de téléchargements. Pas de bière. N ° Xcode

il suffit de l'ajouter à 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" "\$ "'
1
répondu luzik 2018-03-17 16:08:01

celui-ci a fonctionné pour moi, et il a coloré la sortie git et un indicateur dans l'invite si les fichiers ont changé / ont été ajoutés, droit cuit en elle:

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='\[3[32m\]\u@\h\[3[00m\]:\[3[34m\]\w\[3[31m\]$(__git_ps1)\[3[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é dur, mais ne sait pas comment obtenir le chemin de l'installation actuelle.

plus infos ici: http://en.newinstance.it/2010/05/23/git-autocompletion-and-enhanced-bash-prompt/

0
répondu Joshua Muheim 2014-01-28 08:08:13

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

donc, je les ai mis 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
répondu liudongmiao 2016-02-22 08:27:46
  1. Téléchargez les fichiers git-prompt.sh et git-completion.bash de ce git completion
  2. renommer les fichiers.
  3. déplacez ces fichiers dans votre répertoire personnel.
  4. Ajouter le fichier source dans à la .bash_profile

    source ~/git-completion0.bash
    source ~/git-prompt0.sh
    and four to trigger the code block.
    
0
répondu JCLopez 2017-05-27 12:55:41