Question Comment faire pour que git-completion.bash fonctionne sous Mac OS X?


J'ai suivi http://blog.bitfluent.com/post/27983389/git-utilities-you-cant-live-without à ajouter git-completion.bash à mon /opt/local/etc/bash_completion.d/git-completion

et je mets PS1='\h:\W$(__git_ps1 "(%s)") \u\$ ' dans mon fichier .bashrc

Mais maintenant je reçois ça -bash: __git_ps1: command not found tout ce que je fais cd.

Pouvez-vous s'il vous plaît me dire ce qui me manque?


87
2017-08-29 00:49


origine


Voir également: trac.macports.org/wiki/howto/bash-completion - Ioannis Filippidis


Réponses:


J'ai installé git en utilisant MacPorts sur ma nouvelle installation Snow Leopard. Une fois MacPorts installé à partir de l'image .dmg, il s'agirait des commandes de Terminal.app:

sudo port selfupdate
sudo port install git-core +bash_completion

Si vous souhaitez également prendre en charge l'extraction de référentiels et de documents SVN, utilisez plutôt la deuxième ligne:

sudo port install git-core +bash_completion +doc +svn

Ajoutez ensuite les éléments suivants à votre fichier ~ / .profile ou ~ / .bash_profile:

# Achèvement de la commande du shell MacPorts Bash
if [-f / opt / local / etc / bash_completion]; puis
    . / opt / local / etc / bash_completion
Fi

ou pour MacPorts depuis la version 2.1.2 sur Mountain Lion:

# Achèvement de la commande du shell MacPorts Bash
if [-f /opt/local/etc/profile.d/bash_completion.sh]; puis
  . /opt/local/etc/profile.d/bash_completion.sh
Fi

ou pour MacPorts avec les nouvelles versions de git:

if [-f /opt/local/share/git-core/git-prompt.sh]; puis
    . /opt/local/share/git-core/git-prompt.sh
Fi

Note: bash_completion.sh exige bash 4.1 ou supérieur. Si l'achèvement ne fonctionne pas, essayez echo $BASH_VERSION pour voir si c'est le problème. Si oui, entrez MacPorts bash en tapant bash et essayez à nouveau l'achèvement de git.


65
2017-08-30 08:03



Je viens de copier copier collé, et je reçois toujours l'erreur que l'OP a. = \. Comment dites-vous ce qui a été inclus? Je ne fais pas alors k bash_completion est source - NullVoxPopuli
Notez qu'avec les nouvelles versions de git / macport / bash-completion, l'invite se trouve dans un fichier différent. Voir: trac.macports.org/ticket/36334  if [ -f /opt/local/share/git-core/git-prompt.sh ]; then . /opt/local/share/git-core/git-prompt.sh fi - Yehosef
Car /opt/local/etc/profile.d/bash_completion.sh Besoins $BASH_VERSION 4.1 ou supérieur, j'ai dû faire ce qui suit sur un Mac OS X 10.8.3 avec MacPorts 2.1.3: Changer le shell de connexion Mac OS X par défaut /bin/bash (3.2.48 (1) -release) à MacPorts /opt/local/bin/bash (4.2.42 (2) -release) comme cela est décrit ici: stackoverflow.com/a/791244/287984. Fondamentalement if [ `grep /opt/local/bin/bash /etc/shells` ]; then echo /opt/local/bin/bash | chsh -s /opt/local/bin/bash; else echo /opt/local/bin/bash | sudo tee -a /etc/shells; chsh -s /opt/local/bin/bash; fi - Uwe Günther
Travaillé super pour moi A dû remplacer /bin/bash dans Terminal.app avec /opt/local/bin/bash de macports + tous les .bash_profile changements suggérés ici. - bgs
Pour passer à bash 4.1 ou plus tard, vous pouvez suivre les instructions ici: apple.stackexchange.com/questions/70132/... - ThomasW


Si vous avez installé git en utilisant homebrew que vous pourriez ajuster un peu les conseils de MacPorts et l'ajouter à votre .bash_profile et .bashrc

if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then
. `brew --prefix`/etc/bash_completion.d/git-completion.bash
fi

La meilleure façon de vérifier si vous avez correctement installé git en utilisant homebrew ist pour exécuter

brew info git

et vérifier la sortie pour le répertoire d'installation de l'achèvement de git bash

La dernière version de Git (1.7.12) requiert également les éléments suivants pour activer l'invite.

if [ -f `brew --prefix`/etc/bash_completion.d/git-prompt.sh ]; then
    . `brew --prefix`/etc/bash_completion.d/git-prompt.sh
fi

53
2018-06-21 19:39



Pour plus sur __git_ps1, voir superuser.com/a/477749/90231 répondez dans cette pile. - RichVel


Tout ce que vous devez faire est de placer le git-completion.bash fichier dans votre domicile utilisateur bin répertoire et placez les éléments suivants en vous .profile ou .bash_profile fichier:

export PATH="$HOME/bin:$PATH"
source ~/bin/git-completion.bash
PS1='[\u@\h \w$(__git_ps1 " (%s)")]\$ '

Qu'est-ce que cela fait est de s'assurer que votre bin local est dans le PATH et le source commande fait avancer les choses. Alors, bien sûr, la modification de la PS1 place la branche actuellement extraite dans l’invite.

Ainsi, aucun MacPort ne s’installe pour installer la version «achèvement» de GIT (particulièrement irritante si elle est déjà installée).


26
2018-05-27 05:39



github.com/git/git/raw/master/contrib/completion/ - Nickolay
Pour ceux qui se demandent comment combiner cette chose PS1 avec des couleurs dans votre invite, voyez: stackoverflow.com/questions/816790/... - Nickolay
Plus précisément, git-completion.bash doit simplement être quelque part dans votre $PATH. J'ai décidé de mettre le mien /usr/local/bin/ de sorte que je n'ai pas eu à modifier mon existant $PATH. - metavida


Bien que la réponse actuelle soit correcte pour les anciens MacPorts, il existe un nouveau problème avec les MacPorts les plus récents, ce qui entraîne la même erreur.

Le courant Bash-Achèvement package (2.0 r1) nécessite au moins un bash 4.1 pour fonctionner correctement. Comme un OS X Terminal habituel utilise /bin/bash il ne reçoit qu'un 3.x. Vous devez modifier les paramètres du terminal pour utiliser /opt/local/bin/bash -l comme décrit dans la documentation MacPorts ici: http://trac.macports.org/wiki/howto/bash-completion


13
2017-07-19 08:49



C'est la réponse la plus correcte car j'ai seulement commencé à avoir le problème après avoir mis à jour les macports. Le seul inconvénient de l'utilisation des macports bash depuis le terminal est qu'il m'avertit à présent de mettre fin aux processus en cours lorsque j'essaie de fermer la fenêtre de mon terminal. - vitch


Vous devez rechercher les fonctions d’achèvement de la commande. Ajoutez à votre fichier .bashrc_profile avant le PS1:

. /opt/local/etc/bash_completion.d/git-completion

6
2017-08-29 01:19



git-completion.bash peut être trouvé ici: raw.github.com/git/git/master/contrib/completion/... - TJ Biddle


Malheureusement, cela a encore été brisé. Cette fois, ce sont les gens avec la version 1.7.12-1. Pour permettre aux utilisateurs d'avoir uniquement la fonctionnalité d'invite sans la fonctionnalité d'achèvement (ce qui peut ralentir les choses), ils ont remanié la fonctionnalité d'invite de bash_completion / git et dans son propre fichier git-prompt.sh.

Donc, l'ajout de bash_completion tel que décrit par @Lara ne vous mènera à bien que si vous avez terminé (en cliquant sur l'onglet, vous avez terminé les noms de balises / branches).

Pour obtenir le __git_ps1 donc vous pouvez l'utiliser dans votre invite PS1, vous devez également ajouter ce qui suit à votre ~ / .profile.

. /opt/local/share/doc/git-core/contrib/completion/git-prompt.sh

Un peu de contexte est ici - https://bbs.archlinux.org/viewtopic.php?pid=1163632#p1163632


5
2017-09-21 00:15



Le fichier en question: raw.github.com/git/git/master/contrib/completion/git-prompt.sh - papercowboy


Ou avec Homebrew

brew install bash-completion git-extras

3
2018-01-16 04:18



Merci beaucoup. CA devrait etre brew install bash-completion git-extras cependant (tiret au lieu de soulignement). - simonair