J'ai suivi http://blog.bitfluent.com/post/27983389/git-utilities-you-cant-live-without pour 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 .bashrc_profile
Mais maintenant, je reçois ce -bash: __git_ps1: command not found
tout ce que je fais avec une cd
.
Pouvez-vous s'il vous plaît me dire ce qui me manque?
J'ai installé git en utilisant MacPorts sur ma nouvelle installation de Snow Leopard. Une fois MacPorts installé à partir de l'image .dmg, voici les commandes de Terminal.app:
Sudo port selfupdate
Sudo port install git-core +bash_completion
Si vous souhaitez également une assistance pour extraire des référentiels et des documents SVN, utilisez ceci au lieu de la deuxième ligne:
Sudo port install git-core +bash_completion +doc +svn
Ajoutez ensuite les éléments suivants à votre ~/.profile ou ~/.bash_profile:
# Achèvement de la commande MacPorts Bash Shell 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 MacPorts Bash Shell 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
Remarque: bash 4.1 ou supérieur est requis par bash_completion.sh. Si l'achèvement ne fonctionne pas, essayez echo $BASH_VERSION
pour voir si c'est le problème. Si tel est le cas, entrez MacPorts bash en saisissant bash
et essayez à nouveau de l'achèvement de git.
Si vous avez installé git en utilisant homebrew, vous pouvez ajuster un peu les conseils de MacPorts et les ajouter à vos .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
brew info git
et vérifiez 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
Tout ce que vous avez à faire est de placer le fichier git-completion.bash
dans votre répertoire personnel bin
et de placer les éléments suivants dans votre fichier .profile
ou .bash_profile
:
export PATH="$HOME/bin:$PATH"
source ~/bin/git-completion.bash
PS1='[\u@\h \w$(__git_ps1 " (%s)")]\$ '
Cela permet de s’assurer que votre bin local est dans PATH et que la commande source
permet de faire avancer les choses. Ensuite, bien sûr, la modification PS1 place la branche actuellement extraite dans l'invite.
Donc, aucune installation de MacPort pour installer ensuite la version "complète" de GIT (particulièrement irritante si vous l'avez déjà installée).
Bien que la réponse actuelle soit correcte pour les anciens MacPorts, un nouveau problème concernant les MacPorts les plus récents entraîne la même erreur.
Le package actuel de bash-complete (2.0 r1) nécessite au moins un bash 4.1 pour fonctionner correctement. En tant que terminal OS X habituel utilise /bin/bash
, il ne reçoit que 3.x. Vous devez modifier les paramètres de votre terminal pour utiliser /opt/local/bin/bash -l
, comme décrit dans la documentation MacPorts: http://trac.macports.org/wiki/howto/bash-completion
Vous devez rechercher les fonctions de complétion de commande. Ajoutez à votre .bashrc_profile avant la PS1:
. /opt/local/etc/bash_completion.d/git-completion
Ennuis, cela a encore été cassé. Cette fois, ce sont les gens géniaux avec la version 1.7.12-1. Pour permettre aux utilisateurs de ne disposer que de la fonctionnalité Invite sans la fonctionnalité d'achèvement (ce qui peut ralentir le processus), ils ont refactoré la fonctionnalité Invite à partir de bash_completion/git et dans son propre fichier git-Prompt.sh.
Ainsi, l'ajout de bash_completion comme décrit par @Lara ne vous permettra d'obtenir que l'achèvement (cliquer sur l'onglet complète les noms de balises/branches).
Pour obtenir le __git_ps1
afin de pouvoir l'utiliser dans votre invite PS1, vous devez également ajouter les éléments suivants à votre ~/.profile.
. /opt/local/share/doc/git-core/contrib/completion/git-Prompt.sh
Un peu de fond est ici - https://bbs.archlinux.org/viewtopic.php?pid=1163632#p1163632
Ou avec Homebrew
brew install bash-completion git-extras
J'ai trouvé une solution à une question similaire :
Le git-osx-installer est livré avec git-completion.bash
et l’installe à /usr/local/git/contrib/completion/
. Sourcez simplement ce fichier depuis votre .bash_profile
pour obtenir __git_ps1
.
Pour Mountain Lion et Mac-Ports, je devais utiliser les lignes suivantes de mon fichier .bash_profile pour que __git_ps1 et les compléments fonctionnent normalement:
# Bash Shell command completion
if [ -f /opt/local/share/doc/git-core/contrib/completion/git-completion.bash ]; then
. /opt/local/share/doc/git-core/contrib/completion/git-completion.bash
fi
if [ -f /opt/local/share/doc/git-core/contrib/completion/git-Prompt.sh ]; then
. /opt/local/share/doc/git-core/contrib/completion/git-Prompt.sh
fi
J'utilise brasser, donc un script maître bash_completion
qui exécute tous ceux dans bash_completion.d
ne semble pas être fourni. Les solutions qui proposent simplement d'exécuter un seul script pour ajouter des finitions git ne sont pas extensibles, car différents packages ajouteront des scripts d'achèvement différents et vous voudrez probablement les exécuter tous. J'ai donc ajouté ceci (adapté de Arch Linux) à la fin de /etc/bashrc
:
# source compat completion directory definitions
BASH_COMPLETION_COMPAT_DIR=/usr/local/etc/bash_completion.d
if [[ -d $BASH_COMPLETION_COMPAT_DIR && -r $BASH_COMPLETION_COMPAT_DIR && \
-x $BASH_COMPLETION_COMPAT_DIR ]]; then
for i in $(LC_ALL=C command ls "$BASH_COMPLETION_COMPAT_DIR"); do
i=$BASH_COMPLETION_COMPAT_DIR/$i
[[ -f $i && -r $i ]] && . "$i"
done
fi
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
En plus du poste d'Adam K. Johnson
Vous pouvez aussi mettre ce qui suit ...
# MacPorts Bash Shell command completion
if [ -f /opt/local/etc/bash_completion ]; then
. /opt/local/etc/bash_completion
fi
... dans votre/etc/profile, si vous voulez.
Ainsi, tous les utilisateurs du système bénéficieront des scripts d'achèvement de bash installés dans le répertoire "/opt/local/etc/bash_completion.d/".
Bien que la réponse ci-dessus de grundprinzip à partir de 2011 fonctionne toujours bien, je voulais ajouter une réponse plus récente maintenant qu’il existe maintenant un package Homebrew bash-completion ( formule , repo ) qui facilite encore plus cette opération. (Cela inclut l'achèvement de git ainsi que d'autres outils courants.)
Aujourd'hui, macOS est livré avec Bash 3, mais vous pouvez brew install bash
obtenir Bash 4. Si vous utilisez Bash 4, installez la nouvelle branche 2.x de bash-complétion.
Courir:
brew install bash-completion@2
Ajouter à ~/.bash_profile
:
if [ -f /usr/local/share/bash-completion/bash_completion ]; then
. /usr/local/share/bash-completion/bash_completion
fi
Si vous souhaitez vous en tenir à stock bash 3.x sous macOS, suivez plutôt ces instructions.
Courir:
brew install bash-completion
Ajouter à ~/.bash_profile
:
echo "[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion" >> ~/.bash_profile
Référence: http://davidalger.com/development/bash-completion-on-os-x-with-brew/