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 premuto m Tab per completarlo automaticamente in master.
  • 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 predefinito git) brew install git e riavvia il terminale per coloro che si trovano ad affrontare strani errori come 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>]

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 aggiungere bash-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 comando source ~/.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 quello if 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 anche source ~/.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 e brew link git (con override abilitato)
  • Grazie per la cattura @Tope. Ho cambiato update in upgrade.

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

  1. Controlla la versione di git utilizzando il git --version comando
  2. 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 
  3. 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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *