Lors de l’utilisation de git OSX, après avoir modifié un fichier, je peux simplement faire git commit <tab>
, ce qui complétera automatiquement le nom du fichier avec celui qui a été modifié. Cependant, si j’installe une version plus récente de git à partir de homebrew et que je l’utilise, cette fonctionnalité ne fonctionne plus (c’est-à-dire que j’appuie sur <tab>
et qu’elle me «demande» sur quel fichier je veux le faire, même ceux qui n’ont changements).
Quelqu'un peut-il expliquer pourquoi et comment résoudre ce problème? Je préférerais utiliser le git de homebrew, car il est plus à jour.
Mon shell est zsh, et l’installation de bash-completion
ou zsh-completions
n’a pas fonctionné (même après avoir suivi les instructions de post-installation de homebrew).
De plus, après avoir installé git avec homebrew, il est écrit:
Bash completion has been installed to: /usr/local/etc/bash_completion.d
zsh completion has been installed to: /usr/local/share/zsh/site-functions
Donc, ne devrais-je pas pouvoir en utiliser un?
Vous cherchez:
brew install git bash-completion
Comme l'indique le commentaire de warpc, vous devez ajouter ce qui suit à votre ~/.bash_profile
pour que le travail de bash de homebrew fonctionne:
if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi
Ce qui précède est mentionné dans les avertissements lorsque vous installez la formule de complétion-bash.
Remarque: si vous utilisez Bash v4 ou une version ultérieure (via brew install bash
), vous souhaiterez utiliser brew install bash-completion@2
. Pour permettre la complétion par des tabulations, ajoutez ce qui suit à ~/.bash_profile
comme décrit dans les avertissements:
export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"
L'exportation supplémentaire est nécessaire pour git, docker, youtube-dl et d'autres compléments pouvant être inclus dans le répertoire $(brew --prefix)/etc/bash_completion.d/
.
Cette opération complète de l'onglet git fonctionne sous OSX sans avoir à redémarrer votre terminal:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash && echo "source ~/.git-completion.bash" >> ~/.bash_profile && source ~/.bash_profile
pour une raison quelconque, le fichier manquait à $(brew --prefix)/etc/bash_completion
et la réponse correcte de @Graham Perks ne m'a pas aidé
La solution dans mon cas était la suivante:
brew unlink bash-completion
brew link bash-completion
Si quelqu'un d'autre fait mon erreur stupide, essayez brew install git
. J'utilisais la git
fournie avec Xcode et je ne réalisais pas que je n'avais jamais installé le git de Homebrew pour obtenir les compléments automatiques.
J'ai résolu le problème en découvrant que $(brew --prefix)/etc/bash_completion
a retourné Permission denied
lors de l'exécution. Donc après un simple:
chmod +x $(brew --prefix)/etc/bash_completion
Tout fonctionne maintenant bien. Cependant, je me demande pourquoi Homebrew ne rend pas le fichier bash_completion
exécutable lors de l'installation.
J'ai eu le même problème et j'ai même trouvé ce post ce matin. J'ai corrigé le problème en mettant à jour brew avec brew update
, puis en réinstallant git avec brew reinstall git
.
J'ai ensuite été informé d'un autre fichier qui bloquait le processus de liaison homebrew, dans mon cas, il s'agissait de /usr/local/share/zsh/site-functions/git-completion.bash
. Supprimer le fichier et exécuter brew link git
a résolu le problème. En devinant que c'était juste une mauvaise version de recette, nous sommes tombés sur.
Trouvé une solution de travail. C'est très récent (écrit il y a 16 heures et commis il y a 2 heures), et ça vient directement de homebrew .
brew install git --without-completions
Je viens de l'essayer, et cela fonctionne enfin comme prévu.
Étape 1: Téléchargez le script d'achèvement automatique:
cd ~
curl -O https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
Étape 2: Mise à jour des fichiers .bash_profile et .bashrc
echo "source ~/git-completion.bash" >> .bash_profile
echo "source ~/git-completion.bash" >> .bashrc
Cela fonctionnera comme un charme
Via https://www.anintegratedworld.com/git-tab-autocomplete-on-osx-10-11-el-capitan/
Si vous avez $BASH_VERSION
<4.1, par exemple 3.2.57(1)-release
, continuez avec:
brew install bash-completion
# In ~/.bash_profile :
if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi
Cependant, si vous avez brew install bash
pour obtenir la version 4.4.12(1)-release
vous pouvez utiliser les complétions meilleures et plus complètes dans:
brew install bash-completion@2
# In ~/.bash_profile:
[ -f "$(brew --prefix)/share/bash-completion/bash_completion" ] \
&& . "$(brew --prefix)/share/bash-completion/bash_completion"
Notez que certains paquets (brew, docker, tmux) vont encore mettre quelques complétions dans $(brew --prefix)/etc/bash_completion.d/
afin que vous puissiez ajouter:
for completion in "$(brew --prefix)/etc/bash_completion.d/"*
do
. $completion
done
Enfin, vous devriez pouvoir ajouter le script d'achèvement de git si, pour une raison quelconque, la façon dont vous avez installé git ne l'ajoute à aucun de ceux-ci:
[[ -f $(brew --prefix)/etc/bash_completion.d/git \
|| -f $(brew --prefix)/share/bash-completion/completions/git ]] \
|| curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash \
-o $(brew --prefix)/etc/bash_completion.d/git
Vous pouvez obtenir et l'ajouter avec ce qui précède.
Pour moi, je devais mettre
source $(brew --prefix)/etc/bash_completion
dans .bashrc
(pas .bash_profile) pour que cela fonctionne.
".bash_profile est exécuté pour les shells de connexion, alors que .bashrc est exécuté pour les shells interactifs sans login" - from Quelle est la différence entre .bash_profile et .bashrc? Il me semble que MacOS Sierra n'exécute pas .bash_profile
lors de l'ouverture d'une nouvelle fenêtre de terminal, uniquement .bashrc
.
Je ne le mettrais pas dans _bash_profile, car je devrais alors redémarrer/déconnecter pour que les mises à jour prennent effet.
Cela a fonctionné pour moi dans Mojave (OSX 10.14.1):
brew install bash-completion
Ajoutez ensuite la ligne suivante à votre ~/.bash_profile:
[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion
Je sais que ceci est un ancien message, mais vous n'avez pas vraiment besoin d'installer de paquet supplémentaire.
Homebrew vous informe qu'il existe un répertoire avec tout ce dont vous avez besoin.
Vous pouvez simplement ajouter la ligne suivante à votre .bash_profile
si vous utilisez Bash:
source /usr/local/etc/bash_completion.d/git-completion.bash
Cela peut avoir quelque chose à voir avec libedit utilisé au lieu de readline dans Lion.
Essayez d’installer readline avant git.
brew install readline