Sur ma machine Linux, jai la saisie semi-automatique pour les branches avec Git.

[Notez que nous parlons de Achèvement de la branche git, pas achèvement bash (par exemple commandes, fichiers, etc.). Donc PAS du tout la réponse de Lane ]

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

Ou je peux taper git checkout feb* + TAB pour tout obtenir branches commençant par « feb ».

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

Jai essayé de télécharger et dexécuter bash-completion/bash_completion et bash-completion/bash_completion.sh.in mais pas de joie. Le premier a donné des messages derreur à propos de declare: -A invalid_option. Le second na donné aucune erreur. Quand jai git checkout + TAB bien que jobtienne toujours une liste de fichiers dans le répertoire, pas de branches. Je suis à la racine du projet.

Saisie automatique pour les répertoires et Les commandes bash fonctionnent bien, donc cest spécifique à Git.

Commentaires

  • Je viens de rejoindre cette communauté pour pouvoir ‘ répondre encore, mais jai trouvé  » oh-my-zsh  » pour être très utile et jaime vraiment linterface utilisateur: github.com/ohmyzsh/ohmyzsh Ceci est, bien sûr, pour les personnes utilisant zsh. Je ‘ m en supposant que cela ne ‘ t fonctionne pour bash …

Réponse

ok, donc javais besoin du script de saisie semi-automatique git .

Je lai obtenu à partir de cette URL:

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

Inutile de vous soucier du répertoire dans lequel vous vous trouvez lorsque vous exécutez ceci comme répertoire de base (~) est utilisé avec la cible.

Ensuite, jai ajouté à mon fichier ~/.bash_profile le code » exécuter sil existe « suivant:

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

Mise à jour: je « m fais ces bits de code plus concis pour réduire mon fichier .bashrc, dans ce cas Jutilise maintenant:

test -f ~/.git-completion.bash && . $_ 

Remarque: $_ signifie le dernier argument de la commande précédente. donc . $_ signifie lexécuter – « it » étant .git-completion.bash dans ce cas

Cela fonctionne toujours à la fois sur Ubuntu et OSX et sur les machines sans le script .git-completion.bash script.

Maintenant git Onglet ( en fait cela « s git Tab Tab ) fonctionne comme un charme!

ps: Si cela ne fonctionne pas « Ne travaillez pas dès le départ, vous devrez peut-être exécuter chmod u+x ~/.git-completion.bash pour vous accorder les autorisations nécessaires:

  • chmod est la commande qui modifie les permissions du fichier
  • u désigne lutilisateur qui possède le fichier, par défaut son créateur, cest-à-dire vous
  • + signifie définir / activer / ajouter une autorisation
  • x signifie lautorisation dexécution, cest-à-dire la possibilité dexécuter le script

Commentaires

  • Oui, le redémarrage du terminal après avoir ajouté le script bash la fait fonctionner. Jétais assis ici à me demander pourquoi il essayait de se compléter automatiquement dans mon dossier Models lorsque jai frappé m Tab pour quil se complète automatiquement en master.
  • Voir aussi unix.stackexchange.com/q/ 48862/10043 pour une astuce différente
  • Si la réponse acceptée nest ‘ ne fonctionne pas pour nimporte qui, essayez ceci: source ~/.bash_profile après avoir collé le code. Le redémarrage du terminal fera également la même chose.
  • Merci! Jai essayé dautres trucs mais rien na fonctionné (y compris ce github.com/bobthecow/git-flow-completion/wiki/… ). Votre solution a fonctionné comme un charme;)
  • (vous navez ‘ brasser git mais Apple par défaut git) brew install git et redémarrez le terminal pour ceux qui sont confrontés à une erreur étrange comme git checunknown option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config usage: git [--version] [--help] [-C <path>] [-c <name>=<value>] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] [-p | --paginate | --no-pager] [--no-replace-objects] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] <command> [<args>]

Réponse

Certaines personnes préfèrent utiliser un gestionnaire de packages pour automatiser linstallation, la mise à jour et la configuration des packages Mac OS. Je suis un fan des gestionnaires de paquets, et je pense que Homebrew est le meilleur gestionnaire de paquets pour Mac OS (certains diront que c « est le gestionnaire de paquets Mac OS de facto).

Une fois que vous avez installé Homebrew, vous pouvez simplement installer git avec bash-completion avec brew install git bash-completion.

Vous devrez alors mettre ce qui suit dans votre ~/.bash_profile:

if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then . `brew --prefix`/etc/bash_completion.d/git-completion.bash fi 

(Remarque: si cette installation échoue avec une erreur 404 et que vous avez déjà installé git, supprimez simplement la partie git de cette installation de brassage)

Plus dinformations sur linstallation de git et bash-completion avec brew ici.

Commentaires

  • Ajout de git et ajouter bash-completion nest pas du tout la même chose que dajouter .git-completion.bash Ce sont des programmes différents et ils font des choses assez différentes – on fait la commande bash autocompletion et lautre fait lautocompletion de la commande git et ‘ nair the twain will meet;)
  • fonctionne comme un charme, merci beaucoup. Pourriez-vous sil vous plaît expliquer ce quest le utilisation du script que vous mavez ajouté dans ~/.bash_profile?
  • Malgré ce que dautres ont dit à propos de cette réponse, cest celui qui a fait fonctionner git autocomplete i n terminal.
  • Notez que les lignes à ajouter dans le ~/.bash_profile ont été spécifiées pour moi dans la sortie de homebrew. Jai utilisé ceux-ci au lieu des lignes ci-dessus. Ensuite, vous devez recharger le profil bash dans chaque fenêtre de terminal dans laquelle vous souhaitez utiliser la saisie semi-automatique, en utilisant la commande source ~/.bash_profile

Réponse

Exécutez ceci sur le terminal:

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

Ensuite, faites ceci:

vi ~/.bash_profile 

Ajoutez ces lignes:

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

Cest tout. Cela a fonctionné pour moi.

Commentaires

  • (2ème étape) Si quelquun préfère ouvrir le bash_profile avec un éditeur de texte, il suffit de faire ceci: open -e .bash_profile
  • Sur un Mac OS High Sierra vierge, le fichier ~/.bash_profile nexiste ‘. Cela ‘ est très bien, créez simplement le fichier et placez le script if dedans et enregistrez-le. Rechargez votre shell après et cela fonctionnera.
  • Cela a fonctionné pour moi. Au lieu de vi (avec lequel jai toujours du mal), ouvrez simplement -e ~ / .bash_profile
  • Pour la deuxième étape, vous aurez besoin de ce lien

Réponse

git et git-completion.bash sont déjà fournis avec les outils de ligne de commande macOS (xcode-select --install). Pour activer la saisie semi-automatique bash, ajoutez ceci à votre ~/.bash_profile.

[ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ] && . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash 

Cela activera également la saisie semi-automatique pour les branches git.

Commentaires

  • Assez sûr que jai ‘ cinq outils de ligne de commande installés, mais ce fichier nest pas ‘ t existent dans mon cas. Heureux daller avec brew cependant (et puisque mon git est aussi avec brew, peut-être plus sage aussi).
  • Merci! OMI, cela devrait être la réponse avec la coche verte.
  • Cest la solution la plus simple et cela fonctionne pour moi
  • Cela a fonctionné pour moi – même si jai utilisé un format légèrement différent . if [ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ]; then . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash > /dev/null fi
  • pour moi la réponse a fonctionné mais après avoir ajouté la ligne donnée à ~/.bash_profile noubliez pas dexécuter également source ~/.bash_profile (surtout si vous créez le fichier ~/.bash_profile pour la première fois)

Réponse

Voici ce qui déroute certains d’entre vous: vous avez installé un brew ou des ports, mais vous utilisez un git système dans /usr/bin/. Pour vérifier ceci:

which git 

Si vous voyez /usr/bin/git alors soit linfusion nest « pas correctement configurée, soit vous » Vous navez pas installé git via brew.

Si vous installez git via brew, lactivation des complétions bash pour brew activera également les complétions bash pour git. En effet, /usr/local/etc/bash_completion source en fait tout dans /usr/local/bash_completion.d, et le package brew pour git y installe un script de complétion git.

Commentaires

  • Cela a du sens, mais comment pouvez-vous  » activer les complétions bash pour le brassage « ? Vous ‘ ne savez pas comment faire cela, cela devrait faire partie de votre réponse
  • Je viens de le faire (cela fonctionne, merci) via simplified.guide/macos/bash-completion , mais la saisie semi-automatique est retardée de quelques secondes … étrange

Réponse

Saisie semi-automatique de Git sur Catalina et plus récent (en utilisant Homebrew)

macOs changé de bash à zsh comme shell par défaut en commençant par Catalina.
Vous allez donc besoin de scripts de saisie semi-automatique spécifiques pour zsh.

Voici comment les installer avec Homebrew:

brew install zsh-completion 

Le zsh-completion de Brew inclut en fait git-completion.

Pour activer la saisie semi-automatique, vous devez ensuite ajouter un petit bloc de code à votre ~/.zshrc. Vous devrez peut-être créer ce fichier dans votre dossier utilisateur sil nexiste pas déjà. Remarque: La sortie du script dinstallation ci-dessus vous indiquera exactement quel code ajouter, alors lisez-le attentivement et copiez à partir de là au cas où il aurait été mis à jour depuis mon écriture ici.

if type brew &>/dev/null; then FPATH=$(brew --prefix)/share/zsh-completions:$FPATH autoload -Uz compinit compinit fi 

Important:
Lorsque linstallation est terminée, lit la sortie du script dinstallation.
Il vous demandera non seulement dajouter du code à .zshrc, mais vous donnera également des conseils sur les actions supplémentaires qui pourraient être nécessaires, comme forcer la reconstruction de zcompdump. Mais très probablement, vous naurez pas besoin des étapes supplémentaires.

Commentaires

  • Le terminal affiche un message ennuyeux chaque fois quil ‘ est ouvert: zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]? Mais ça marche!
  • Je viens de rejoindre cette communauté pour pouvoir ‘ t encore de répondre, mais jai trouvé que  » oh-my-zsh  » était super utile et jaime vraiment linterface utilisateur: github.com/ohmyzsh/ohmyzsh Ceci est, bien sûr, pour les personnes utilisant zsh. Je ‘ m en supposant que cela ne ‘ t fonctionne pour bash …

Réponse

Vous pouvez installer bash et git depuis MacPorts avec loption « bash_completion » activée. Cest probablement le moyen le plus simple de maintenir à jour 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 localiser les paramètres de complétion sur votre système Linux, jetez un œil dans / etc /bash_completion.d/git (cest un long fichier). Copier cela en lui-même ne fonctionnera probablement pas, car il est conçu pour être fourni par le cadre de complétion via / etc / bash_completion (qui provient de /etc/profile.d/bash_completion.sh; fichiers dans / etc / profile .d proviennent de / etc / profile).

Réponse

Si votre complétion git est partiellement interrompue, même après le sourcing https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash, vous devrez peut-être simplement mettre à jour votre version de git.

Par exemple, lorsque jai tapé git check + TAB, la saisie semi-automatique se ferait correctement git checkout. Mais lorsque jai tapé git checkout + TAB, il naffichait pas la liste des branches, seulement HEAD.

Le correctif pour moi était de mettre à jour mon git version. Jétais sur 2.7.0, qui nétait apparemment pas compatible avec la dernière git-completion.bash. Jai exécuté brew upgrade git, qui la mis à jour à 2.13.0, et maintenant il prop remplit automatiquement mes noms de branche.

Commentaires

  • Jobtenais le même problème, mais jai dû exécuter brew upgrade git et brew link git (avec le remplacement activé)
  • Merci pour la capture @Tope. Jai changé update en upgrade.

Réponse

De loin, la meilleure référence que jai trouvée pour résoudre ce problème est sur SpinDance , par Connor Livingston :

Si le git- complete.bash le script nexiste pas sur votre ordinateur, veuillez le récupérer à partir du lien que jai fourni ci-dessus (qui est ceci ) et enregistrez-le sur votre ordinateur local dans un nouveau fichier appelé git-completion.bash dans le /usr/local/etc/bash_completion.d/ répertoire. Si le script git-completion.bash existe sur votre machine, mais ne se trouve pas dans le répertoire /usr/local/etc/bash_completion.d/ , nous devrions 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 laffaire. Pour ceux qui sont curieux de connaître le répertoire /usr/local/etc/bash_completion.d/ : cest pour stocker de nouvelles commandes de complétion, et vous devrez peut-être le créer sil nexiste pas déjà sur votre machine.

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

Remarque: 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 enregistrez. La dernière étape consiste à recharger votre profil bash. Vous pouvez y parvenir en exécutant source ~ / .bash_profile dans votre session bash actuelle.

Réponse

Installer oh-my-zsh et définissez zsh comme shell par défaut et remerciez-moi plus tard 🙂

Commentaires

  • Jai fait cela, précisément dans lespoir de ne pas avoir pour y faire face – toujours pas de suggestions de branche après avoir frappé longlet
  • Vous navez en fait pas besoin de oh-my-zsh , ni même dun système de plugins séparé du tout! La complétion Git est prête à lemploi, il vous suffit de lactiver.

Réponse

Je lai essayé et ça fonctionne bien pour les branches, mais lorsque vous faites git st + tab alors cela montre lerreur comme ceci

option inconnue: –list-cmds = list-mainporcelain, others, nohelpers, alias, list-complete, utilisation de la configuration: 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 =] []

A effectué une recherche sur Internet et a constaté que --list-cmds dans .git-completion.bash était dans la dernière version du git et sur mon mac, la version git était 2.17.2

Voici les solutions

Solution 1

  1. Vérifiez la version de git en utilisant la commande git --version
  2. Ensuite, mettez le même numéro de version dans lurl que je lai 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 de git à la dernière, alors cela devrait fonctionner.

Réponse

La plupart des utilisateurs auront git installé dans le cadre de la ligne de commande xcode outils à /usr/bin/git et bash completio n règles pour git seront disponibles sur /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash.

Dans ce cas, il nest pas nécessaire dinstaller git depuis Homebrew ou de créer des règles de complétion git depuis raw.githubusercontent.com. Créez simplement un lien symbolique comme suit:

cd /usr/local/etc/bash_completion.d/ ln -s /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash git 

Remarque: assurez-vous davoir « installé et configuré le package bash-completion depuis Homebrew.

Réponse

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 

Réponse

Localisez votre fichier .bashrc.

Ouvrez-le et ajoutez ceci ligne en bas:

source /etc/bash_completion.d/git

Commentaires

  • Je ne ‘ Je nai rien dans un dossier /etc/bash_completion.d/, sur un système relativement nouveau (OSX 10.10.3).
  • Essayez de créer
  • Pas bash_completion, git_completion qui fait des choses différentes.
  • @MichaelDurrant Cela fonctionne. Faites-moi confiance.;) prowrestlingtees.com / media / catalog / product / cache / 1 / image / …
  • @crmpicco Pourriez-vous sil vous plaît fournir des instructions pour créer /etc/bash_completion.d/git? Cela rendrait votre réponse plus utile.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *