Come configurare il completamento della riga di comando di git bash?


131

Ad esempio su una nuova macchina Ubuntu, ho appena eseguito sudo apt-get gite non c'è completamento durante la digitazione ad es git check[tab].

Non ho trovato nulla su http://git-scm.com/docs , ma il completamento IIRC è incluso nel pacchetto git di questi tempi e ho solo bisogno della voce giusta nel mio bashrc.


Per me funziona immediatamente su Ubuntu Precise (e Fedora 17).
Chiocciola meccanica

2
Per verificare se lo hai per impostazione predefinita o meno, puoi eseguire (cd ~ && exec cat .bashrc | grep completion).
aderchox

Risposte:


183

Su Linux

sulla maggior parte delle distribuzioni, lo script di completamento git viene installato in /etc/bash_completion.d/(o /usr/share/bash-completion/completions/git) quando installi git, non è necessario andare su GitHub. Devi solo usarlo: aggiungi questa riga al tuo .bashrc:

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

In alcune versioni di Ubuntu, git autocomplete potrebbe essere interrotto per impostazione predefinita, reinstallare eseguendo questo comando dovrebbe risolverlo:

sudo apt-get install git-core bash-completion

Su Mac

Puoi installare il completamento di git utilizzando Homebrew o MacPorts.

homebrew

se $BASH_VERSION> 4: brew install bash-completion@2(versione aggiornata) presta particolare attenzione alla versione di bash che hai come impostazione predefinita di MacOS viene fornita con il rilascio 3.2.57 (1).

aggiungi a .bash_profile:

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

Per le versioni precedenti di bash: brew install bash-completion

aggiungi a .bash_profile:

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

MacPorts

sudo port install git +bash_completion

quindi aggiungi questo al tuo .bash_profile:

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

maggiori informazioni in questa guida: Installa il completamento di Bash git

Si noti che in tutti i casi è necessario creare una nuova shell (aprire una nuova scheda / finestra del terminale) affinché le modifiche abbiano effetto.


1
La maggior parte delle scatole * nix (specialmente Ubuntu) hanno già quel file, quindi il mio problema è stato risolto solo dal mio utente. Grazie.
nevvermind

5
ubuntu potrebbe averlo come /etc/bash_completion.d/git-prompt
Catskul

2
Ho Git ma non /etc/bash_completion.d
sixty4bit

15
Nel mio Ubuntu 14.04 questo file è /usr/share/bash-completion/completions/git. /etc/bash_completion.d/git-promptviene utilizzato per il supporto del prompt di git, non per il completamento.
Ray Chen

18
ATTENZIONE: il metodo homebrew per Mac funziona solo se git è stato installato tramite homebrew do, brew uninstall bash-completionquindi brew install gitse git è stato installato tramite un altro metodo prima, i passaggi precedenti funzioneranno.
patapouf_ai

66

ho avuto lo stesso problema, ho seguito i passaggi seguenti:

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

quindi aggiungi le seguenti righe al tuo .bash_profile(generalmente sotto la tua cartella home)

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

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


Ero dietro a un proxy, quindi ho dovuto impostare prima il proxy per far funzionare il curl export https_proxy=proxy_ip:proxy_port. Non capisco perché non ottiene le impostazioni dal sistema.
madlymad

2
non è davvero necessario nascondere quel file con un punto davanti al suo nome. Inoltre: attento alle versioni git (vedi la risposta di wisbucky)
Walter Tross

42

La maggior parte delle istruzioni che vedrai ti dirà di scaricare

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

e fonte che nel tuo script di avvio bash come .bashrc.

Ma c'è un problema con questo, perché fa riferimento al masterramo, che è l'ultima versione di git-completion.bash. Il problema è che a volte si rompe perché non è compatibile con la versione di git che hai installato.

In effetti, in questo momento si interromperà perché il masterramo git-completion.bashha nuove funzionalità che richiedono git v2.18, a cui nessuno dei gestori di pacchetti e degli installatori è ancora aggiornato. Riceverai un erroreunknown option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config

Quindi la soluzione più sicura è fare riferimento alla versione / tag che corrisponde al git che hai installato. Per esempio:

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

Nota che ha un v2.17.nell'URL invece di master. E poi, ovviamente, assicurati di inserirlo nello script di avvio di bash.


Questa è la migliore risposta per macOS.
AShelly

Wow ... Dopo circa un'ora di insulti nel mio cervello su questo, il tuo commento è stato la chiave. Grazie per questa soluzione! D'oro!
Myke Carter

4
Il file specifico /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bashdella versione di macos dovrebbe essere già su disco qui: per sicurezza l'ho diffuso con la versione 2.17.1 su GitHub e corrisponde.
jmt

18

Ubuntu 14.10

Installa git-coreebash-completion

sudo apt-get install -y git-core bash-completion
  • Per l'utilizzo della sessione corrente

    source /usr/share/bash-completion/completions/git
  • Per averlo sempre attivo per tutte le sessioni

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

1
Grazie, questo ha funzionato per me su Ubuntu 16.04 LTS :)
Mrunal Pagnis


6

Basta farlo nel tuo ~/.bashrc:

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

Altre risposte ti dicono di installare bash-completion, non è necessario farlo, ma se lo fai, non è necessario fornire direttamente il completamento. Fai l'uno o l'altro, non entrambi.

Una soluzione più generica sta interrogando la posizione del sistema come raccomandato dal progetto di completamento bash:

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

1
La tua soluzione generica ha funzionato perfettamente per me su Ubuntu 18.04. Per iniziare, il tuo metodo è estremamente conciso, grazie!
Jason R Stevens CFA

4

sul mio ubuntu c'è un file installato qui:

source /etc/bash_completion.d/git-prompt

puoi seguire i link nella /usr/lib/git-corecartella. Puoi trovare le istruzioni su come configurare o utilizzare PS1__git_ps1


3

Può essere utile per qualcuno: -

Dopo aver scaricato .git-completamento.bash dal seguente collegamento,

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

e cercando di utilizzare la funzione __git_ps1, ho ricevuto un errore come ...

 -bash: __git_ps1: command not found

Apparentemente abbiamo bisogno di scaricare gli script separatamente dal master per far funzionare questo comando, poiché __git_ps1 è definito in git-prompt.sh. Così simile al download di .git-completamento.bash, prendi git-prompt.sh:

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

e quindi aggiungi quanto segue nel tuo .bash_profile

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

source ~ / .bash.git eseguirà il file scaricato e

export PS1='\W$(__git_ps1 "[%s]") il comando aggiungerà il nome del ramo di checkout dopo la directory di lavoro corrente (se è un repository git).

Quindi sembrerà: -

dir_Name[branch_name] dove dir_Name è il nome della directory di lavoro e branch_name sarà il nome del ramo su cui stai attualmente lavorando.

Nota: __git_ps1 fa distinzione tra maiuscole e minuscole.


1

Arch Linux

Sorgente /usr/share/git/completion/git-completion.bashin uno dei file di avvio di bash.

Per esempio:

# ~/.bashrc

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

Potresti essere in grado di trovare lo script in altre posizioni come /usr/share/bash-completion/completions/gitma questi script non hanno funzionato per me.


-1

Ubuntu

C'è una bellissima risposta qui . Ha funzionato per me su Ubuntu 16.04

finestre

Git Bash è lo strumento per consentire il completamento automatico. Non sono sicuro che questo faccia parte della distribuzione standard, quindi puoi trovare utile anche questo collegamento . A proposito, Git Bash consente di utilizzare i comandi della shell di Linux per lavorare su Windows, il che è un'ottima cosa per le persone che hanno esperienza in ambiente GNU / Linux.


-1

Su GitHub nel progetto Git, forniscono un file bash per il completamento automatico dei comandi git.

Dovresti scaricarlo nella home directory e dovresti forzare bash a eseguirlo. Sono semplicemente due passaggi e perfettamente spiegati (passo dopo passo) nel seguente post del blog.

blog di code-worrier: autocomplete-git /

L'ho testato su Mac, dovrebbe funzionare anche su altri sistemi. È possibile applicare lo stesso approccio ad altri sistemi operativi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.