`Git` de Homebrew n’utilise pas l’achèvement

Lorsque j’utilise git OSX, après avoir modifié un fichier, je peux simplement faire git commit , et cela complètera automatiquement le nom du fichier à celui qui a été modifié. Cependant, si j’installe une nouvelle version de git à partir de homebrew et que je l’utilise, cette fonctionnalité ne fonctionne plus (c’est-à-dire que j’appuie sur et me demande quel fichier je souhaite), même n’a pas de changement).

Quelqu’un peut-il nous 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 ni l’installation de bash-completion ni zsh-completions n’a fonctionné (même après avoir suivi les instructions post-installation de homebrew).

En outre, après l’installation de git avec homebrew, il est dit

 Bash completion has been installed to: /usr/local/etc/bash_completion.d zsh completion has been installed to: /usr/local/share/zsh/site-functions 

Alors, ne devrais-je pas en utiliser un?

Vous cherchez:

 brew install git bash-completion 

Comme l’indique le commentaire de warpc, vous devrez append ce qui suit à votre ~/.bash_profile pour que l’opération de complétion 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 bash-completion.

L’achèvement de l’onglet Get de Git fonctionne sur OSX sans avoir à redémarrer votre terminal:

 curl https://raw.githubusercontent.com/git/git/master/consortingb/completion/git-completion.bash -o ~/.git-completion.bash && echo "source ~/.git-completion.bash" >> ~/.bash_profile && source ~/.bash_profile 

pour une raison quelconque, le fichier à $(brew --prefix)/etc/bash_completion me $(brew --prefix)/etc/bash_completion donc la réponse correcte de @Graham Perks ne fonctionnait pas pour moi

La solution dans mon cas était la suivante:

 brew unlink bash-completion brew link bash-completion 

Au cas où quelqu’un d’autre commettrait une erreur stupide, essayez d’ brew install git . J’utilisais le git fourni avec Xcode et je ne me suis pas rendu compte que je n’avais jamais installé le git de Homebrew pour obtenir les autocompletions.

J’ai résolu le problème en trouvant que $(brew --prefix)/etc/bash_completion Permission denied lors de l’exécution. Donc après un simple:

 chmod +x $(brew --prefix)/etc/bash_completion 

Tout va bien maintenant. 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 l’infusion avec la brew update , puis en réinstallant git avec brew reinstall git .

J’ai ensuite été informé d’un autre fichier qui bloque le processus de liaison homebrew, dans mon cas, il s’agissait de /usr/local/share/zsh/site-functions/git-completion.bash . La suppression du fichier et l’exécution du brew link git résoudre le problème. Deviner que c’était juste une mauvaise version de recette sur laquelle nous sums tombés.

Trouvé une solution de travail. C’est très récent (créé il y a 16 heures et validé il y a 2 heures), et il provient directement de l’homebrew .

brew install git --without-completions

Je l’ai juste essayé, et ça fonctionne finalement comme prévu.

Étape 1: Téléchargez le script de complétion automatique:

 cd ~ curl -O https://raw.githubusercontent.com/git/git/master/consortingb/completion/git-completion.bash 

Étape 2: mettre à jour le fichier .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 4.4.12(1)-release les plus complètes et les 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) continueront d’append des compléments à $(brew --prefix)/etc/bash_completion.d/ afin d’append:

 for completion in "$(brew --prefix)/etc/bash_completion.d/"* do . $completion done 

Enfin, vous devriez pouvoir append le script d’achèvement git si, pour quelque raison que ce soit, la manière dont vous avez installé git ne l’ajoutait à aucun des deux:

 [[ -f $(brew --prefix)/etc/bash_completion.d/git \ || -f $(brew --prefix)/share/bash-completion/completions/git ]] \ || curl https://raw.githubusercontent.com/git/git/master/consortingb/completion/git-completion.bash \ -o $(brew --prefix)/etc/bash_completion.d/git 

Vous pouvez l’obtenir et l’append 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, tandis que .bashrc est exécuté pour les shells interactifs sans connexion” – 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 il me faudrait alors redémarrer / déconnecter pour que les mises à jour prennent effet.

Il se peut que libedit soit utilisé à la place de readline dans Lion.

Essayez d’installer readline avant git.

 brew install readline 

Pour ceux qui ont déjà fait armser Bash-Achèvement installé. Je n’ai pas installé le script d’achèvement git et je n’ai pas trouvé de lien pour cela.

Je l’ai donc ajouté manuellement:

curl https://raw.githubusercontent.com/git/git/master/consortingb/completion/git-completion.bash -o $(brew --prefix)/etc/bash_completion.d/git

Notez que vous devez renommer le fichier et supprimer l’extension pour que cela fonctionne.

Si vous n’avez pas terminé ou installé git, installez-le dans la réponse acceptée.

brew install git bash-completion