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ăsat m Tab pentru a face completarea automată la master.
  • 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 implicit git) brew install git și reporniți terminalul pentru cei care se confruntă cu o eroare ciudată precum 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>]

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ăugarea bash-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 comanda source ~/.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 script if 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 și source ~/.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 și brew link git (cu suprascrierea activată)
  • Vă mulțumim pentru captura @Tope. Am schimbat update în upgrade.

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

  1. Verificați versiunea git utilizând comanda git --version
  2. 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 
  3. 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.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *