Sulla mia macchina Linux ho il completamento automatico per i rami con Git.
[Nota di cui stiamo parlando completamento di git branch, non completamento di bash (es. comandi, file, ecc.). Quindi NON Lane “risposta ]
Ad esempio posso digitare git checkout
+ TAB e ottenere un elenco di rami.
Oppure posso digitare git checkout feb*
+ TAB per ottenere tutto rami che iniziano con “feb”.
Come posso ottenere questa funzionalità su un Mac?
Ho provato a scaricare ed eseguire bash-completion/bash_completion
e bash-completion/bash_completion.sh.in
ma nessuna gioia. Il primo ha fornito messaggi di errore su declare: -A invalid_option
. Il secondo non ha dato errori. Quando ho git checkout
+ TAB sebbene riceva ancora un elenco di file nella directory, non nei rami. Sono nella radice del progetto.
Completamento automatico per directory e i comandi bash funzionano bene, quindi è specifico per Git.
Commenti
- Mi sono appena iscritto a questa community, quindi non posso ‘ rispondere, ma ho trovato ” oh-my-zsh ” per essere super super utile e mi piace molto linterfaccia utente: github.com/ohmyzsh/ohmyzsh Questo è, ovviamente, per le persone che usano zsh. ‘ presumo che ‘ t funzioni per bash …
Risposta
ok, quindi avevo bisogno dello script di completamento automatico git .
Lho preso da questo URL:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
Non cè bisogno di preoccuparsi di quale directory ti trovi quando lo esegui come directory home (~
) viene utilizzato con il target.
Quindi ho aggiunto al mio file ~/.bash_profile
il seguente codice” esegui se esiste “:
if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi
Aggiornamento: sto rendendo questi bit di codice più concisi per ridurre il mio file .bashrc
, in questo caso Ora uso:
test -f ~/.git-completion.bash && . $_
Nota: $_
indica lultimo argomento del comando precedente. quindi . $_
significa eseguirlo – “it” essendo .git-completion.bash
in questo caso
Funziona ancora su Ubuntu e OSX e su macchine senza lo script .git-completion.bash
script.
Ora git
Tab ( in realtà “s git
Tab Tab ) funziona come un incantesimo!
ps: Se non funziona “Per risolvere il problema, potresti dover eseguire chmod u+x ~/.git-completion.bash
per concederti lautorizzazione necessaria:
-
chmod
è il comando che modifica i permessi del file -
u
indica lutente che possiede il file, per impostazione predefinita il suo creatore, cioè tu -
+
significa impostare / attivare / aggiungere unautorizzazione -
x
significa eseguire lautorizzazione, ovvero la capacità di eseguire il script
Commenti
- Sì, riavviare il terminale dopo aver aggiunto lo script bash lo ha fatto funzionare. Ero seduto qui chiedendomi perché continuasse a provare a completare automaticamente la mia cartella
Models
quando ho premutom
Tab
per completarlo automaticamente inmaster
. - Vedi anche unix.stackexchange.com/q/ 48862/10043 per un suggerimento diverso
- Se la risposta accettata non ‘ non funziona per nessuno, prova questo:
source ~/.bash_profile
dopo aver incollato il codice. Anche il riavvio del terminale farà la stessa cosa. - Grazie! Ho provato altre cose ma niente ha funzionato (incluso questo github.com/bobthecow/git-flow-completion/wiki/… ). La tua soluzione ha funzionato a meraviglia;)
- (non ‘ non hai preparato
git
ma Apple predefinitogit
)brew install git
e riavvia il terminale per coloro che si trovano ad affrontare strani errori comegit 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>]
Risposta
Alcune persone preferiscono utilizzare un gestore di pacchetti per automatizzare linstallazione, laggiornamento e la configurazione dei pacchetti Mac OS. Sono un fan dei gestori di pacchetti e penso che Homebrew sia il miglior gestore di pacchetti per Mac OS (alcuni direbbero che è de facto il gestore di pacchetti di Mac OS).
Dopo aver installato Homebrew, puoi semplicemente installare git insieme a bash-completamento con brew install git bash-completion
.
Dovrai quindi inserire quanto segue nel tuo ~/.bash_profile
:
if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then . `brew --prefix`/etc/bash_completion.d/git-completion.bash fi
(Nota: se questa installazione non riesce con un errore 404 e hai già git installato, rimuovi la parte git di questa installazione brew)
Altre informazioni sullinstallazione di git e il completamento di bash con brew qui.
Commenti
- Aggiunta di
git
e aggiungerebash-completion
non è affatto la stessa cosa che aggiungere.git-completion.bash
Sono programmi diversi e fanno cose abbastanza diverse: uno fa il comando bash autocompletion e laltro fa git command autocompletion e ‘ nair the twain si incontrerà;) - funziona come un incantesimo, molte grazie. Potresti per favore spiegare qual è il uso dello script che mi hai fatto aggiungere in
~/.bash_profile
? - Nonostante ciò che altri hanno detto su questa risposta, è quello che ha fatto funzionare git autocomplete i n terminal.
- Nota che le righe da aggiungere nel
~/.bash_profile
sono state specificate per me nelloutput di homebrew. Ho usato quelli invece delle linee sopra. Quindi devi ricaricare il profilo bash in ogni finestra del terminale in cui desideri utilizzare il completamento automatico, utilizzando il comandosource ~/.bash_profile
Rispondi
Esegui questo sul terminale:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
Quindi, fai questo:
vi ~/.bash_profile
Aggiungi queste righe:
if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi
Questo è tutto. Per me ha funzionato.
Commenti
- (2 ° passaggio) Se qualcuno preferisce aprire bash_profile con un editor di testo, basta farlo: open -e .bash_profile
- Su un Mac OS High Sierra vergine, il file
~/.bash_profile
‘ non esiste. ‘ va bene, basta creare il file e inserire quelloif
script lì e salvare. Ricarica la shell dopo e funzionerà. - Questo ha funzionato per me. Invece di vi (con cui faccio sempre fatica) apri -e ~ / .bash_profile
- Per il secondo passaggio avrai bisogno di questo link
Risposta
git
e git-completion.bash
sono già forniti con gli strumenti della riga di comando di macOS (xcode-select --install
). Per abilitare il completamento automatico bash, aggiungilo al tuo ~/.bash_profile
.
[ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ] && . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
Questo abiliterà anche il completamento automatico per i rami git.
Commenti
- Sono abbastanza sicuro di ‘ che sono installati strumenti da riga di comando, ma quel file non ‘ non esiste nel mio caso. Felice di andare con la birra però (e dato che il mio cuore è anche con la birra, forse anche più saggia).
- Grazie! IMO, questa dovrebbe essere la risposta con il segno di spunta verde.
- Questa è la soluzione più semplice e funziona per me
- Questo ha funzionato per me, anche se ho usato un formato leggermente diverso .
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
- per me la risposta ha funzionato ma dopo aver aggiunto la riga data a
~/.bash_profile
non dimenticare di eseguire anchesource ~/.bash_profile
(soprattutto se crei il file~/.bash_profile
per la prima volta)
Rispondi
Ecco cosa confonde alcuni di voi: avete brew o port installati, ma state usando un git di sistema in /usr/bin/
. Per verificarlo:
which git
Se vedi /usr/bin/git
, la birra non è “configurata correttamente o tu” non ho installato git tramite brew.
Se installi git tramite brew, abilitare i completamenti bash per brew abiliterà anche i completamenti bash per git. Questo perché /usr/local/etc/bash_completion
fornisce effettivamente tutto in /usr/local/bash_completion.d
e il pacchetto brew per git installa uno script di completamento git lì.
Commenti
- Questo ha senso, ma come vorresti ” abilitare i completamenti bash per brew “? ‘ ti manca come farlo, questo dovrebbe essere parte della tua risposta
- Lho appena fatto (funziona, grazie) tramite Simplified.guide/macos/bash-completion , ma il completamento automatico è ritardato di un paio di secondi … dispari
Rispondi
Completamento automatico Git su Catalina e versioni successive (utilizzando Homebrew)
macO modificati da bash a zsh come shell predefinita a partire da Catalina.
Quindi lo farai necessitano di script di completamento automatico specifici per zsh.
Ecco come installarli con Homebrew:
brew install zsh-completion
Il completamento zsh di Brew “in effetti include git-completamento.
Per attivare il completamento automatico devi quindi aggiungere un piccolo blocco di codice al tuo ~/.zshrc
. Potrebbe essere necessario creare quel file nella cartella utente se non esiste già. Nota: Loutput dello script di installazione precedente ti dirà esattamente quale codice aggiungere, quindi leggilo attentamente e copia da lì nel caso sia stato aggiornato da quando ho scritto qui.
if type brew &>/dev/null; then FPATH=$(brew --prefix)/share/zsh-completions:$FPATH autoload -Uz compinit compinit fi
Importante:
Al termine dellinstallazione, leggi loutput dello script di installazione.
It ti istruirà non solo ad aggiungere codice a .zshrc, ma ti darà anche consigli su azioni aggiuntive che potrebbero essere necessarie, come forzare la ricostruzione di zcompdump. Ma molto probabilmente non avrai bisogno di passaggi aggiuntivi.
Commenti
- Il terminale mostra un messaggio fastidioso ogni volta che ‘ è stato aperto:
zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]?
Ma funziona! - Mi sono appena iscritto a questa community, quindi posso ‘ t ha ancora risposto, ma ho trovato ” oh-my-zsh ” super super utile e mi piace molto linterfaccia utente: github.com/ohmyzsh/ohmyzsh Questo è, ovviamente, per le persone che utilizzano zsh. ‘ presumo che ‘ t funzioni per bash …
Risposta
È possibile installare bash e git da MacPorts con lopzione “bash_completion” abilitata. È probabilmente il modo più semplice per mantenere aggiornati sia git che i completamenti.
http://denis.tumblr.com/post/71390665/adding-bash-completion-for-git-on-mac-os-x-snow-leopard
Per installare MacPort: http://www.macports.org/install.php/
Ulteriori informazioni
Per quanto riguarda lindividuazione delle impostazioni di completamento sul tuo sistema Linux, dai unocchiata in / etc /bash_completion.d/git (è un file lungo). Copiarlo di per sé probabilmente non funzionerà, tuttavia, poiché è progettato per essere acquisito dal framework di completamento tramite / etc / bash_completion (che è ricavato da /etc/profile.d/bash_completion.sh; file in / etc / profile .d provengono da / etc / profile).
Risposta
Se il completamento di git è parzialmente interrotto, anche dopo il sourcing https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
, potresti dover solo aggiornare la tua versione di git.
Ad esempio, quando ho digitato git check
+ TAB
, verrà completato automaticamente git checkout
. Ma quando ho digitato git checkout
+ TAB
, non mostrava lelenco dei rami, solo HEAD
.
La soluzione per me era aggiornare il mio git
versione. Ero sulla 2.7.0, che apparentemente non era compatibile con lultima git-completion.bash
. Ho eseguito brew upgrade git
, che lo ha aggiornato alla 2.13.0, e ora prop completa automaticamente i nomi dei miei rami.
Commenti
- Ho riscontrato lo stesso problema, ma ho dovuto eseguire
brew upgrade git
ebrew link git
(con override abilitato) - Grazie per la cattura @Tope. Ho cambiato
update
inupgrade
.
Risposta
Di gran lunga, il miglior riferimento che “ho trovato per risolvere proprio questo problema è su SpinDance , di Connor Livingston :
Se git- Completamento.bash script non esiste sulla tua macchina, recuperalo dal link che ho fornito sopra (che è questo ) e salvalo sul tuo computer locale in un nuovo file chiamato git-completamento.bash nella /usr/local/etc/bash_completion.d/ directory. Se lo script git-completamento.bash esiste sulla tua macchina, ma non si trova nella directory /usr/local/etc/bash_completion.d/ , dovremmo crearne una copia in quella directory. Un rapido sudo cp /current/path/to/your/git-completion.bash /usr/local/etc/bash_completion.d/git-completion.bash dovrebbe fare il trucco. Per coloro che sono curiosi della directory /usr/local/etc/bash_completion.d/ : serve per memorizzare nuovi comandi di completamento e potrebbe essere necessario crearla se non esiste già sul tuo macchina.
A questo punto lo script git-completamento.bash dovrebbe esistere sulla macchina locale nella directory /usr/local/etc/bash_completion.d/ . Ora collegheremo lo script di completamento di git a bash puntando ad esso da ~ / .bash_profile .
Nota: la tilde nella frase precedente si riferisce alla directory home del tuo computer. Aggiungi la seguente riga a ~ / .bash_profile : source /usr/local/etc/bash_completion.d/git-completion.bash e salva. Il passaggio finale è ricaricare il tuo profilo bash. Puoi ottenere ciò eseguendo source ~ / .bash_profile nella tua sessione bash corrente.
Risposta
Installa oh-my-zsh e imposta zsh come shell predefinita e ringraziami più tardi 🙂
Commenti
- Lho fatto, proprio nella speranza di non avere per affrontarlo – ancora nessun suggerimento per i rami dopo aver premuto tab
- In realtà non hai bisogno di oh-my-zsh , o nemmeno di un sistema di plugin separato! Il completamento di Git viene fuori dalla scatola, devi solo abilitarlo.
Risposta
Provato e funziona bene per i rami, ma quando esegui git st
+ tab
viene visualizzato lerrore in questo modo
opzione sconosciuta: –list-cmds = list-mainporcelain, others, nohelpers, alias, list-complete, utilizzo della configurazione: 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 =] []
Ho eseguito una ricerca su Internet e ho scoperto che --list-cmds
in .git-completion.bash
era nellultima versione del git e sul mio Mac la versione di git era 2.17.2
Ecco le soluzioni
Soluzione 1
- Controlla la versione di git utilizzando il
git --version
comando -
Quindi inserisci nellURL lo stesso numero di versione che ho fatto io
curl https://raw.githubusercontent.com/git/git/v2.17.2/contrib/completion/git-completion.bash -o ~/.git-completion.bash
-
Quindi segui gli stessi passaggi della risposta in alto, inserisci il codice seguente in
~/.bash_profile
if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi
Soluzione 2
Dovresti provare ad aggiornare la versione git allultima, allora dovrebbe funzionare.
Risposta
La maggior parte degli utenti avrà git
installato come parte della riga di comando xcode strumenti in /usr/bin/git
e bash completio n regole per git saranno disponibili su /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
.
In questo caso non è necessario installare git da Homebrew o regole di completamento git sorgente da raw.githubusercontent.com. Crea semplicemente un link simbolico come segue:
cd /usr/local/etc/bash_completion.d/ ln -s /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash git
Nota: assicurati di aver installato e configurato il pacchetto bash-completion
da Homebrew.
Risposta
Per macOS Catalina +, in zsh
:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh -o ~/.git-completion.zsh
Quindi aggiorna il tuo ~/.zshrc
con:
if [ -f ~/.git-completion.zsh ]; then . ~/.git-completion.zsh fi
Risposta
Individua il tuo .bashrc
file.
Aprilo e aggiungi questo riga in fondo:
source /etc/bash_completion.d/git
Commenti
- Non ‘ t avere una cartella
/etc/bash_completion.d/
su un sistema relativamente nuovo (OSX 10.10.3). - Prova a creare it.
- Non bash_completion, git_completion che fa cose diverse.
- @MichaelDurrant Funziona. Fidati di me.;) prowrestlingtees.com / media / catalog / product / cache / 1 / image / …
- @crmpicco Potresti fornire istruzioni per la creazione di
/etc/bash_completion.d/git
? Renderebbe la tua risposta più preziosa.