480 votes

git auto-complete pour *branches* en ligne de commande ?

Sur ma machine Linux, j'ai l'autocomplétion. pour les branches avec Git.

(Notez que nous parlons de la complétion de branche git, no la complétion de bash (par exemple, les commandes, les fichiers, etc). Ainsi, PAS Réponse de Lane du tout]

Par exemple, je peux taper git checkout + TAB et obtenir une liste de branches.

Ou je peux taper git checkout feb* + TAB pour obtenir toutes les branches qui commencent par "feb".

Comment puis-je obtenir cette fonctionnalité sur un Mac ?

J'ai essayé de télécharger et d'exécuter bash-completion/bash_completion y bash-completion/bash_completion.sh.in mais sans succès. La première a donné des messages d'erreur sur declare: -A invalid_option . La seconde n'a donné aucune erreur. Lorsque je git checkout + TAB mais j'obtiens toujours une liste de fichiers dans le répertoire, pas de branches. Je suis dans le projet Root.

L'auto-complétion pour les répertoires et les commandes bash fonctionne bien, donc c'est spécifique à Git.

0 votes

Je viens de rejoindre cette communauté donc je ne peux pas encore répondre, mais j'ai trouvé "oh-my-zsh" super super utile et j'aime vraiment l'interface utilisateur : github.com/ohmyzsh/ohmyzsh Ceci est, bien sûr, pour les personnes utilisant zsh. Je suppose que cela ne fonctionne pas pour bash...

0 votes

Maintenant que le Mac utilise zsh au lieu de bash. cette réponse peut s'avérer utile.

4voto

Kimmo Suominen Points 41

Vous pouvez installer bash et git depuis MacPorts avec l'option "bash_completion" activée. C'est probablement le moyen le plus simple de maintenir à jour à la fois git et les complétions.

http://denis.tumblr.com/post/71390665/adding-bash-completion-for-git-on-mac-os-x-snow-leopard

Pour installer MacPorts : http://www.macports.org/install.php/

Informations complémentaires

Pour ce qui est de la localisation des paramètres de complétion sur votre système Linux, regardez dans /etc/bash_completion.d/git (c'est un long fichier). Le copier seul ne fonctionnera probablement pas, car il est conçu pour être utilisé par le framework de complétion via /etc/bash_completion (qui provient de /etc/profile.d/bash_completion.sh ; les fichiers dans /etc/profile.d proviennent de /etc/profile).

3voto

NonCreature0714 Points 427

Pour MacOS Catalina+, dans zsh :

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh -o ~/.git-completion.zsh

Ensuite, mettez à jour votre ~/.zshrc avec :

if [ -f ~/.git-completion.zsh ]; then
    . ~/.git-completion.zsh
fi

1 votes

Maintenant, j'ai c:8: command not found: __git_aliased_command quand j'essaie de compléter automatiquement...

2voto

wisbucky Points 3974

Si votre completion git est partiellement cassé, même après avoir sourcé https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash vous devez peut-être simplement mettre à jour votre version de git.

Par exemple, quand j'ai tapé git check + TAB l'autocomplétion se fait correctement git checkout . Mais quand j'ai tapé git checkout + TAB il n'a pas affiché la liste des branches, mais seulement le nom de l'entreprise. HEAD .

La solution pour moi a été de mettre à jour mon git version. J'étais sur la 2.7.0, qui apparemment n'était pas compatible avec la dernière git-completion.bash . J'ai couru brew upgrade git qui l'a mis à jour en 2.13.0, et maintenant il autocomplète correctement les noms de mes branches.

1 votes

Merci pour l'info @Tope. J'ai changé update à upgrade .

0 votes

J'ai eu le même problème, mais j'ai dû exécuter brew upgrade git y brew link git (avec l'annulation activée)

2voto

ravegasaenz Points 21

De loin, la meilleure référence que j'ai trouvée pour résoudre ce problème se trouve sur le site suivant SpinDance par Connor Livingston :

Si le git-completion.bash script n'existe pas sur votre machine, veuillez le récupérer à partir du lien que j'ai fourni ci-dessus (qui est ce ) et enregistrez-le sur votre machine locale dans un nouveau fichier appelé git-completion.bash dans le /usr/local/etc/bash_completion.d/ répertoire. Si le git-completion.bash Le script existe sur votre machine, mais ne se trouve pas dans le fichier /usr/local/etc/bash_completion.d/ nous devons en créer une copie dans ce répertoire. Un rapide sudo cp /current/path/to/your/git-completion.bash /usr/local/etc/bash_completion.d/git-completion.bash devrait faire l'affaire. Pour ceux qui sont curieux de connaître le /usr/local/etc/bash_completion.d/ : il sert à stocker les nouvelles commandes de complétion, et vous devrez peut-être le créer s'il n'existe pas déjà sur votre machine.

A ce stade, le script git-completion.bash devrait exister sur votre machine locale dans le répertoire /usr/local/etc/bash_completion.d/ répertoire. Maintenant nous allons brancher la complétion git script dans bash en la pointant depuis ~/.bash_profile .

Note : le tilde dans la phrase précédente fait référence au répertoire personnel de votre ordinateur. Ajoutez la ligne suivante à ~/.bash_profile : source /usr/local/etc/bash_completion.d/git-completion.bash et sauvegarder. L'étape finale consiste à recharger votre profil bash. Vous pouvez le faire en exécutant source ~/.bash_profile dans votre session bash actuelle.

2voto

Konrad Points 8333

J'ai essayé et ça marche bien pour les branches mais quand vous faites git st + tab alors il montre l'erreur comme ceci

option inconnue : --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config utilisation : git [--version] [--help] [-C ] [-c =] [--exec-path[=]] [--html-path] [--man-path] [--info-path] [-p | --paginate | --no-pager] [--no-replace-objects] [--bare] [--git-dir=] [--work-tree=] [--namespace=] []

J'ai cherché sur Internet et j'ai trouvé que --list-cmds en .git-completion.bash était dans la dernière version de git et sur mon mac la version de git était 2.17.2

Voici les solutions

Solution 1

  1. Vérifiez la version du git en utilisant git --version commande

  2. Puis mettez le même numéro de version dans l'url que j'ai fait

    curl https://raw.githubusercontent.com/git/git/v2.17.2/contrib/completion/git-completion.bash -o ~/.git-completion.bash
  3. Ensuite, suivez les mêmes étapes que dans la réponse du haut, mettez le code ci-dessous dans ~/.bash_profile

    if [ -f ~/.git-completion.bash ]; then
      . ~/.git-completion.bash
    fi

Solution 2

Vous devriez essayer de mettre à jour la version git à la dernière version et cela devrait fonctionner.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X