Pe computerul meu Linux am completare automată pentru ramuri cu Git.
[Notă despre care vorbim finalizare git branch, finalizare nu bash (de ex. comenzi, fișiere etc.). Astfel, NU Lane „răspunde deloc deloc]
De exemplu, pot tasta git checkout
+ TAB și obțineți o listă de ramuri.
Sau pot tasta git checkout feb*
+ TAB pentru a obține toate ramuri care încep cu „feb”.
Cum pot obține această funcționalitate pe un Mac?
Am încercat să descarc și să rulez bash-completion/bash_completion
și bash-completion/bash_completion.sh.in
dar nici o bucurie. Primul a dat mesaje de eroare despre declare: -A invalid_option
. Al doilea nu a dat erori. Când am git checkout
+ TAB deși primesc în continuare o listă de fișiere în director, nu în ramuri. Sunt în rădăcina proiectului.
Completare automată pentru directoare și comenzile bash funcționează ok, deci este specific Git.
Comentarii
- Tocmai m-am alăturat acestei comunități, astfel încât să nu pot ‘ încă să răspund, dar am găsit ” oh-my-zsh ” să fiu super-util și îmi place foarte mult interfața de utilizare: github.com/ohmyzsh/ohmyzsh Aceasta este, desigur, pentru persoanele care utilizează zsh. ‘ presupunând că nu ‘ funcționează pentru bash …
Răspunde
ok, așa că aveam nevoie de scriptul de completare automată git .
Am obținut acest lucru de la această adresă URL:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
Nu este nevoie să vă faceți griji cu privire la directorul în care vă aflați când îl rulați ca director de acasă (~
) este utilizat cu ținta.
Apoi am adăugat în fișierul meu ~/.bash_profile
următorul cod” executați dacă există „:
if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi
Actualizare: fac aceste biți de cod mai concise pentru a micșora fișierul .bashrc
, în acest caz Acum folosesc:
test -f ~/.git-completion.bash && . $_
Notă: $_
înseamnă ultimul argument la comanda anterioară. deci . $_
înseamnă rulați – „it” fiind .git-completion.bash
în acest caz
Acest lucru funcționează în continuare atât pe Ubuntu, cât și pe Ubuntu OSX și pe mașini fără scriptul .git-completion.bash
.
Acum git
Tab ( de fapt „s git
Tab Tab ) funcționează ca un farmec!
ps: Dacă nu „Nu funcționați, poate fi necesar să rulați chmod u+x ~/.git-completion.bash
pentru a vă acorda permisiunea necesară:
-
chmod
este comanda care modifică permisiunile fișierului -
u
înseamnă utilizatorul care deține fișierul, în mod implicit creatorul acestuia, adică tu -
+
înseamnă set / activate / add a permission -
x
înseamnă permisiunea de executare, adică capacitatea de a rula script
Comentarii
- Da, repornirea terminalului după adăugarea scriptului bash a făcut să funcționeze. Stăteam aici întrebându-mă de ce încearcă să completeze automat în folderul
Models
când am apăsatm
Tab
pentru a face completarea automată lamaster
. - Consultați și unix.stackexchange.com/q/ 48862/10043 pentru un sfat diferit
- Dacă răspunsul acceptat nu funcționează pentru nimeni, încercați acest lucru:
source ~/.bash_profile
după lipirea codului. Repornirea terminalului va face, de asemenea, același lucru. - Vă mulțumim! Am încercat alte lucruri, dar nimic nu a funcționat (inclusiv acest github.com/bobthecow/git-flow-completion/wiki/… ). Soluția dvs. a funcționat ca un farmec;)
- (nu ‘ nu aveți preparat
git
, dar Apple implicitgit
)brew install git
și reporniți terminalul pentru cei care se confruntă cu o eroare ciudată precumgit 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ăspuns
Unii oameni preferă să utilizeze un manager de pachete pentru a automatiza instalarea, actualizarea și configurarea pachetelor Mac OS. Sunt fan al managerilor de pachete și cred că Homebrew este cel mai bun manager de pachete pentru Mac OS (unii ar spune că este de facto managerul de pachete Mac OS).
Odată ce ați instalat Homebrew, pur și simplu puteți instala git împreună cu bash-complete cu brew install git bash-completion
.
Va trebui apoi să introduceți următoarele în ~/.bash_profile
:
if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then . `brew --prefix`/etc/bash_completion.d/git-completion.bash fi
(Notă: dacă această instalare eșuează cu o eroare 404 și aveți deja git instalat, trebuie doar să eliminați partea git a acestei instalări de preparare)
Mai multe informații la instalarea git și bash-complete cu brew aici.
Comentarii
- Adăugarea
git
și adăugareabash-completion
nu este deloc la fel cu adăugarea.git-completion.bash
Acestea sunt programe diferite și fac lucruri destul de diferite – unul face comanda bash completarea automată, iar cealaltă comandă git completarea automată și ‘ nair, cei doi se vor întâlni;) - funcționând ca un farmec, mulțumesc. Puteți explica, vă rog, ce este utilizarea scriptului pe care mi l-ați adăugat în
~/.bash_profile
? - În ciuda a ceea ce au spus alții despre acest răspuns, acesta a făcut ca git să completeze automat funcționarea i n terminal.
- Rețineți că liniile de adăugat în
~/.bash_profile
au fost specificate pentru mine în ieșirea homebrew. Le-am folosit pe acestea în locul liniilor de mai sus. Apoi, trebuie să reîncărcați profilul bash în fiecare fereastră de terminal în care doriți să utilizați completarea automată, utilizând comandasource ~/.bash_profile
Răspuns
Rulați acest lucru pe terminal:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
Apoi, faceți acest lucru:
vi ~/.bash_profile
Adăugați aceste rânduri:
if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi
Asta este tot. Acest lucru a funcționat pentru mine.
Comentarii
- (al doilea pas) Dacă cineva preferă să deschidă bash_profile cu un editor de text, faceți acest lucru: deschideți -e .bash_profile
- Pe un Mac OS High Sierra virgin, fișierul
~/.bash_profile
nu există ‘. Exista ‘ este bine doar să creați fișierul și să plasați acel scriptif
acolo și salvați. Reîncărcați shell-ul după și va funcționa. eu. În loc de vi (cu care mă lupt mereu) trebuie doar să deschideți -e ~ / .bash_profile - Pentru al doilea pas veți avea nevoie de acest link
Răspuns
git
și git-completion.bash
vin deja cu instrumente pentru linia de comandă macOS (xcode-select --install
). Pentru a activa completarea automată bash, adăugați acest lucru la ~/.bash_profile
.
[ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ] && . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
Acest lucru va permite și completarea automată pentru ramurile git.
Comentarii
- Destul de sigur că am ‘ că am instalat instrumente pentru linia de comandă, dar acel fișier nu ‘ nu există în cazul meu. Cu toate acestea, mă bucur să merg cu brew (și deoarece git-ul meu este și cu brew, poate și mai înțelept).
- Mulțumesc! IMO, acesta ar trebui să fie răspunsul cu bifa verde.
- Aceasta este cea mai simplă soluție și funcționează pentru mine
- Acest lucru a funcționat pentru mine – deși am folosit un format ușor diferit .
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
- pentru mine răspunsul a funcționat, dar după adăugarea liniei date la
~/.bash_profile
nu uitați să rulați șisource ~/.bash_profile
(mai ales dacă creați fișierul~/.bash_profile
pentru prima dată)
Răspundeți
Iată ce anume vă încurcă pe unii dintre voi: aveți brew sau porturi instalate, dar utilizați un git de sistem în /usr/bin/
. Pentru a verifica acest lucru:
which git
Dacă vedeți /usr/bin/git
, atunci fie preparatul nu este „configurat corect, fie dvs.” Nu ați instalat git via brew.
Dacă instalați git prin brew, atunci activarea completărilor bash pentru brew va activa și completările bash pentru git. Acest lucru se datorează faptului că /usr/local/etc/bash_completion
sursă de fapt totul din /usr/local/bash_completion.d
, iar pachetul brew pentru git instalează acolo un script de completare git.
Comentarii
- Acest lucru are sens, dar cum ați putea ” să activați completări bash pentru preparare „? ‘ îți lipsește cum să faci asta, aceasta ar trebui să facă parte din răspunsul tău
- Tocmai am făcut acest lucru (funcționează, mulțumesc) prin simplified.guide/macos/bash-completion , dar finalizarea automată este întârziată cu câteva secunde … ciudat
Răspuns
Completarea automată a Git pe Catalina și mai recentă (folosind Homebrew)
macO-urile s-au schimbat din bash la zsh ca shell implicit începând cu Catalina.
Deci veți au nevoie de scripturi de completare automată specifice pentru zsh.
Iată cum să le instalați cu Homebrew:
brew install zsh-completion
Completarea zsh de la Brew include, de fapt, completarea git.
Pentru a activa completarea automată, trebuie să adăugați un mic bloc de cod la ~/.zshrc
. Este posibil să trebuiască să creați acel fișier în folderul dvs. de utilizator dacă nu există deja. Notă: Ieșirea scriptului de instalare de mai sus vă va spune exact ce cod să adăugați, deci citiți cu atenție și copiați de acolo în cazul în care a fost actualizat de când am scris aici.
if type brew &>/dev/null; then FPATH=$(brew --prefix)/share/zsh-completions:$FPATH autoload -Uz compinit compinit fi
Important:
Când instalarea sa încheiat, citiți ieșirea scriptului de instalare. vă va instrui nu numai să adăugați cod la .zshrc, dar vă va oferi și sfaturi cu privire la acțiunile suplimentare care ar putea fi necesare, cum ar fi reconstruirea forței zcompdump. Dar cel mai probabil nu veți avea nevoie de pașii suplimentari.
Comentarii
- Terminalul afișează un mesaj enervant de fiecare dată când ‘ s-a deschis:
zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]?
Dar funcționează! - Tocmai m-am alăturat acestei comunități, astfel încât să pot ‘ încă nu răspund, dar am găsit că ” oh-my-zsh ” este foarte super util și îmi place foarte mult interfața de utilizare: github.com/ohmyzsh/ohmyzsh Aceasta este, desigur, pentru persoanele care utilizează zsh. ‘ presupunând că nu ‘ nu funcționează pentru bash …
Răspuns
Puteți instala bash și git de pe MacPorts cu opțiunea „bash_completion” activată. Este probabil cel mai simplu mod de a menține atât git cât și completările actualizate.
http://denis.tumblr.com/post/71390665/adding-bash-completion-for-git-on-mac-os-x-snow-leopard
Pentru a instala MacPorts: http://www.macports.org/install.php/
Informații suplimentare
În ceea ce privește localizarea setărilor de finalizare pe sistemul dvs. Linux, aruncați o privire în / etc /bash_completion.d/git (este un fișier lung). Copierea asta de la sine probabil nu va funcționa, totuși, deoarece este concepută pentru a fi obținută de cadrul de finalizare prin / etc / bash_completion (care este obținut din /etc/profile.d/bash_completion.sh; fișiere în / etc / profile .d provin din / etc / profile).
Răspuns
Dacă finalizarea git-ului este parțial ruptă, chiar și după aprovizionare https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
, poate fi necesar doar să vă actualizați versiunea git.
De exemplu, când am tastat git check
+ TAB
, se completează corect git checkout
. Dar când am tastat git checkout
+ TAB
, nu a afișat lista ramurilor, doar HEAD
.
Remedierea pentru mine a fost să îmi actualizez git
. Am fost la 2.7.0, ceea ce aparent nu era compatibil cu cea mai recentă git-completion.bash
. Am rulat brew upgrade git
, care l-a actualizat la 2.13.0, iar acum prop îmi completez automat numele sucursalelor.
Comentarii
- Primeam aceeași problemă, dar trebuia să rulez
brew upgrade git
șibrew link git
(cu suprascrierea activată) - Vă mulțumim pentru captura @Tope. Am schimbat
update
înupgrade
.
Răspuns
De departe, cea mai bună referință pe care am găsit-o pentru a rezolva această problemă este pe SpinDance , de Connor Livingston :
Dacă git- scriptul complete.bash nu există pe computerul dvs., preluați-l din linkul pe care l-am furnizat mai sus (care este acesta ) și salvați-l pe mașina dvs. locală într-un fișier nou numit git-complete.bash în /usr/local/etc/bash_completion.d/ director. Dacă există scriptul git-complete.bash pe aparatul dvs., dar nu se află în directorul /usr/local/etc/bash_completion.d/ , ar trebui să creăm o copie a acestuia în acel director. Un sudo cp /current/path/to/your/git-completion.bash /usr/local/etc/bash_completion.d/git-completion.bash ar trebui să facă trucul. Pentru cei care sunt curioși de directorul /usr/local/etc/bash_completion.d/ : este pentru stocarea comenzilor de finalizare noi și poate fi necesar să îl creați dacă nu există deja pe machine.
În acest moment, scriptul git-complete.bash ar trebui să existe pe computerul dvs. local în directorul /usr/local/etc/bash_completion.d/ . Acum vom conecta scriptul de completare git în bash, arătându-l din ~ / .bash_profile .
Notă: tilda din propoziția anterioară se referă la directorul principal de pe computer. Adăugați următoarea linie la ~ / .bash_profile : sursă /usr/local/etc/bash_completion.d/git-completion.bash și salvați. Ultimul pas este să reîncărcați profilul bash. Puteți realiza acest lucru executând source ~ / .bash_profile în sesiunea de bash curentă.
Răspuns
Instalare oh-my-zsh și setează zsh ca shell implicit și mulțumește-mi mai târziu 🙂
Comentarii
- Am făcut asta, tocmai în speranța de a nu avea pentru a face față – încă nu există sugestii de ramură după ce ați apăsat fila
- De fapt, nu aveți nevoie de oh-my-zsh , sau chiar de niciun alt sistem de plugin separat! Finalizarea Git iese din cutie, trebuie doar să o activați.
Răspuns
Am încercat și funcționează bine pentru sucursale, dar când faceți git st
+ tab
atunci se afișează eroarea astfel
opțiune necunoscută: –list-cmds = list-mainporcelain, altele, nohelpers, alias, list-complete, config usage: 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 căutat pe internet și a constatat că --list-cmds
în .git-completion.bash
se afla în cea mai recentă versiune a git și pe mac-ul meu versiunea git a fost 2.17.2
Iată soluțiile
Soluția 1
- Verificați versiunea git utilizând comanda
git --version
-
Apoi puneți același număr de versiune în adresa URL ca și eu
curl https://raw.githubusercontent.com/git/git/v2.17.2/contrib/completion/git-completion.bash -o ~/.git-completion.bash
-
Apoi urmați aceiași pași ca în răspunsul de sus, puneți codul de mai jos în
~/.bash_profile
if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi
Soluția 2
Ar trebui să încercați să actualizați versiunea git la cea mai recentă, apoi ar trebui să funcționeze.
Răspuns
Majoritatea utilizatorilor vor avea git
instalat ca parte a liniei de comandă xcode instrumente la /usr/bin/git
și bash completio n reguli pentru git vor fi disponibile la /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
.
În acest caz nu este necesar să instalați git de la Homebrew sau să obțineți reguli de completare a gitului de la raw.githubusercontent.com. Creați doar un link simbolic după cum urmează:
cd /usr/local/etc/bash_completion.d/ ln -s /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash git
Notă: asigurați-vă că ați instalat și configurat pachetul bash-completion
din Homebrew.
Răspuns
Pentru macOS Catalina +, în zsh
:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh -o ~/.git-completion.zsh
Apoi actualizați ~/.zshrc
cu:
if [ -f ~/.git-completion.zsh ]; then . ~/.git-completion.zsh fi
Răspuns
Localizați fișierul .bashrc
.
Deschideți-l și adăugați acest linie în partea de jos:
source /etc/bash_completion.d/git
Comentarii
- Nu ‘ nu are nimic dintr-un folder
/etc/bash_completion.d/
, pe un sistem relativ nou (OSX 10.10.3). - Încercați să creați it.
- Nu bash_completion, git_completion care face lucruri diferite.
- @MichaelDurrant Funcționează. Crede-mă.;) prowrestlingtees.com / media / catalog / product / cache / 1 / image / …
- @crmpicco Puteți furniza instrucțiuni pentru crearea
/etc/bash_completion.d/git
? Ar face răspunsul dvs. mai valoros.