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