web-dev-qa-db-fra.com

Comment configurer la complétion de ligne de commande git bash?

Par exemple. sur une nouvelle machine Ubuntu, je viens de lancer Sudo apt-get git, et la saisie est incomplète, par exemple. git check[tab].

Je n'ai rien trouvé sur http://git-scm.com/docs , mais l'achèvement du IIRC est inclus dans le paquet git ces jours-ci et j'ai juste besoin de la bonne entrée dans mon bashrc.

91
Vincent Scheib

Sur Linux

sur la plupart des distributions, le script d'achèvement git est installé dans /etc/bash_completion.d/ (ou /usr/share/bash-completion/completions/git) lorsque vous installez git, inutile d’aller dans github. Vous avez juste besoin de l'utiliser - ajoutez cette ligne à votre .bashrc:

source /etc/bash_completion.d/git
# or
source /usr/share/bash-completion/completions/git

Dans certaines versions d'Ubuntu, git autocomplete peut être cassé par défaut, la réinstallation en exécutant cette commande devrait résoudre le problème:

Sudo apt-get install git-core bash-completion

Sur mac

Vous pouvez installer la complétion de git avec Homebrew ou MacPorts.

Homebrew

si $BASH_VERSION> 4: brew install bash-completion@2 (version mise à jour) Portez une attention particulière à la version de bash que vous avez comme version par défaut de MacOS est livrée avec la version 3.2.57 (1).

ajouter à .bash_profile:

  if [ -f /usr/local/share/bash-completion/bash_completion ]; then
    . /usr/local/share/bash-completion/bash_completion
  fi

Pour les anciennes versions de bash: brew install bash-completion

ajouter à .bash_profile:

[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion

MacPorts

Sudo port install git +bash_completion

puis ajoutez ceci à votre .bash_profile:

if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
fi

plus d'infos dans ce guide: Installer la complétion de Bash git

Notez que dans tous les cas, vous devez créer un nouveau shell (ouvrez un nouvel onglet/fenêtre de terminal) pour que les modifications prennent effet.

144
Sergey Evstifeev

j'ai eu le même problème, suivi ci-dessous les étapes:

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

puis ajoutez les lignes suivantes à votre .bash_profile (généralement sous votre dossier personnel)

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

source: http://code-worrier.com/blog/autocomplete-git/

51
jospratik

La plupart des instructions que vous voyez vous diront de télécharger

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

et source que dans votre script de démarrage bash comme .bashrc.

Mais il y a un problème avec cela, car il fait référence à la branche master, qui est la dernière version de git-completion.bash. Le problème est que parfois, cela casserait parce que ce n’est pas compatible avec la version de git que vous avez installée.

En fait, cela va casser parce que la branche git-completion.bash De la branche master comporte de nouvelles fonctionnalités nécessitant git v2.18, qui n’a pas encore été mise à jour par les gestionnaires de paquets et les installateurs. Vous obtiendrez une erreur unknown option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config

La solution la plus sûre consiste donc à référencer la version/balise correspondant au git que vous avez installé. Par exemple:

https://raw.githubusercontent.com/git/git/v2.17.1/contrib/completion/git-completion.bash

Notez qu'il a un v2.17. Dans l'URL au lieu de master. Et puis, bien sûr, assurez-vous d’avoir source dans le script de démarrage bash.

31
wisbucky

Ubuntu 14.10

Installer git-core et bash-completion

Sudo apt-get install -y git-core bash-completion
  • Pour l'utilisation de la session en cours

    source /usr/share/bash-completion/completions/git
    
  • Pour l'avoir toujours pour toutes les sessions

    echo "source /usr/share/bash-completion/completions/git" >> ~/.bashrc
    
14
Andrzej Rehmann

Voir https://github.com/git/git/blob/master/contrib/completion/git-completion.bash

Vous avez juste besoin de source le script d'achèvement

14
wich

sur mon Ubuntu il y a un fichier installé ici:

source /etc/bash_completion.d/git-Prompt

vous pouvez suivre les liens dans le dossier /usr/lib/git-core. Vous pouvez y trouver une instruction, comment configurer PS1 ou utiliser __git_ps1

2
kisp

Peut être utile pour quelqu'un: -

Après avoir téléchargé le fichier .git-completion.bash à partir du lien suivant,

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

et en essayant d'utiliser la fonction __git_ps1, je devenais erreur as--

 -bash: __git_ps1: command not found

Apparemment, nous devons télécharger les scripts séparément du maître pour que cette commande fonctionne, car __git_ps1 est défini dans git-Prompt.sh. Tellement semblable au téléchargement de .git-completion.bash, obtenez le git-Prompt.sh:

curl -L https://raw.github.com/git/git/master/contrib/completion/git-Prompt.sh > ~/.bash_git

puis ajoutez ce qui suit dans votre .bash_profile

source ~/.bash_git
if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
export PS1='\W$(__git_ps1 "[%s]")>'
fi

source ~/.bash.git exécutera le fichier téléchargé et

La commande export PS1='\W$(__git_ps1 "[%s]") ajoutera le nom de la branche d'extraction après le répertoire de travail actuel (s'il s'agit d'un référentiel git).

Donc ça va ressembler à: -

dir_Name[branch_name] Où nom_répertoire est le nom du répertoire de travail et nom_branche sera le nom de la branche sur laquelle vous travaillez actuellement.

Veuillez noter que __git_ps1 est sensible à la casse.

2
Nicks

Faites ceci dans votre ~/.bashrc:

source /usr/share/bash-completion/completions/git

D’autres réponses vous disent d’installer bash-completion _, vous n’avez pas besoin de le faire, mais si vous le faites, il n’est pas nécessaire de rechercher directement le résultat. Vous faites l'un ou l'autre, pas les deux.

Une solution plus générique consiste à interroger l'emplacement du système, comme recommandé par le projet bash-completion:

source "$(pkg-config --variable=completionsdir bash-completion)"/git
0
FelipeC