På min Linux-maskin har jeg autofullføring for filialer med Git.

[Merk vi snakker om fullføring av git-grenen, ikke bash-fullføring (f.eks. kommandoer, filer osv.). Dermed IKKE Lanes svar i det hele tatt]

For eksempel kan jeg skrive git checkout + TAB og få en liste over grener.

Eller jeg kan skrive git checkout feb* + TAB for å få alle grener som begynner med «feb».

Hvordan kan jeg få denne funksjonaliteten på en Mac?

Jeg prøvde å laste ned og kjøre bash-completion/bash_completion og bash-completion/bash_completion.sh.in men ingen glede. Den første ga feilmeldinger om declare: -A invalid_option. Den andre ga ingen feil. Når jeg git checkout + TAB selv om jeg fremdeles får en liste over filer i katalogen, ikke grener. Jeg er i prosjektroten.

Komplett automatisk for kataloger og bash-kommandoer fungerer ok, så det er spesifikt for Git.

Kommentarer

  • Jeg har nettopp blitt med i dette fellesskapet, så jeg kan ‘ ennå ikke svare, men jeg fant » oh-my-zsh » for å være super super nyttig og jeg liker brukergrensesnittet: github.com/ohmyzsh/ohmyzsh Dette er selvfølgelig for folk som bruker zsh. Jeg ‘ Jeg antar at det ikke fungerer ‘ for bash …

Svar

ok, så jeg trengte git autofullføringsskriptet.

Jeg fikk det fra denne url:

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

Ingen grunn til å bekymre deg for hvilken katalog du er i når du kjører denne som hjemmekatalog (~) brukes sammen med målet.

Så la jeg til ~/.bash_profile -filen min følgende» utfør hvis den eksisterer «-kode:

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

Oppdatering: Jeg gjør disse kodebitene mer konsise for å krympe ned .bashrc -filen, i dette tilfellet Jeg bruker nå:

test -f ~/.git-completion.bash && . $_ 

Merk: $_ betyr det siste argumentet til forrige kommando. så . $_ betyr kjør det – «det» er .git-completion.bash i dette tilfellet

Dette fungerer fremdeles på både Ubuntu og OSX og på maskiner uten skript .git-completion.bash skript.

git Tab ( faktisk fungerer det «s git Tab Tab )!

ps: Hvis dette ikke gjør det «t work off the bat, du må kanskje kjøre chmod u+x ~/.git-completion.bash for å gi deg selv den nødvendige tillatelsen:

  • chmod er kommandoen som endrer filtillatelser
  • u betyr brukeren som eier filen, som standard dens skaper, dvs. du
  • + betyr angi / aktivere / legge til en tillatelse
  • x betyr utføre tillatelse, dvs. muligheten til å kjøre skript

Kommentarer

  • Jepp, start terminalen på nytt etter å ha lagt til bash-skriptet fikk det til å fungere. Jeg satt her og lurte på hvorfor det fortsatte å prøve å fullføre automatisk til Models -mappen min da jeg traff m Tab for å gjøre det autofullfør til master.
  • Se også unix.stackexchange.com/q/ 48862/10043 for et annet tips
  • Hvis det aksepterte svaret ikke er ‘ t fungerer for noen, så prøv dette: source ~/.bash_profile etter at du har limt inn koden. Å starte terminalen på nytt vil også gjøre det samme.
  • Takk! Jeg prøvde noen andre ting, men ingenting fungerte (inkludert dette github.com/bobthecow/git-flow-completion/wiki/… ). Løsningen din fungerte som en sjarm;)
  • (du trenger ikke ‘ t har brygget git men Apple har standard git) brew install git og start terminalen på nytt for de som står overfor rare feil som 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>]

Svar

Noen foretrekker å bruke en pakkebehandling for å automatisere installasjon, oppdatering og konfigurering av Mac OS-pakker. Jeg er en fan av pakkeforvaltere, og jeg synes Homebrew er den beste pakkebehandleren for Mac OS (noen vil si at det er de facto Mac OS pakkehåndteringen).

Når du har installert Homebrew, du kan bare installere git sammen med bash-fullføring med brew install git bash-completion.

Du må da sette følgende i ~/.bash_profile:

if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then . `brew --prefix`/etc/bash_completion.d/git-completion.bash fi 

(Merk: Hvis denne installasjonen mislykkes med en 404-feil, og du allerede har git installert, er det bare å fjerne git-delen av denne brygginstallasjonen)

Mer info om å installere git og bash-fullføring med brygge her.

Kommentarer

  • Legger til git og å legge til bash-completion er slett ikke det samme som å legge til .git-completion.bash De er forskjellige programmer og de gjør ganske forskjellige ting – man gjør bash-kommando autofullføring og den andre gjør kommandoen autofullføring og ‘ nair de to møter;)
  • fungerer som en sjarm, mange takk. Kan du forklare hva som er bruk av skriptet du har fått meg lagt til i ~/.bash_profile?
  • Til tross for hva andre har sagt om dette svaret, er det den som fikk git til å fullføre arbeidet jeg n terminal.
  • Merk at linjene som skal legges til i ~/.bash_profile ble spesifisert for meg i utgangen av hjemmebrygging. Jeg brukte dem i stedet for linjene ovenfor. Deretter må du laste bash-profilen på nytt i hvert terminalvindu du vil bruke autofullføring i, ved å bruke kommandoen source ~/.bash_profile

Svar

Kjør dette på terminal:

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

Gjør dette:

vi ~/.bash_profile 

Legg til disse linjene:

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

Det er alt. Dette fungerte for meg.

Kommentarer

  • (2. trinn) Hvis noen foretrekker å åpne bash_profilen med en tekstredigerer, gjør du bare dette: åpne -e .bash_profile
  • På et jomfruelig Mac OS High Sierra eksisterer ~/.bash_profile -filen ikke ‘ t. Den ‘ Det går bra å lage filen og plassere det if der inne og lagre. Last inn skallet ditt etter, så fungerer det.
  • Dette fungerte for meg. I stedet for vi (som jeg alltid sliter med) er det bare å åpne -e ~ / .bash_profile
  • For det andre trinnet trenger du denne lenken

Svar

git og git-completion.bash kommer allerede med macOS kommandolinjeverktøy (xcode-select --install). For å aktivere bash autofullføring, legg dette til ~/.bash_profile.

[ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ] && . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash 

Dette vil også aktivere autofullføring for git-grener.

Kommentarer

  • Ganske sikker på at jeg ‘ har installert kommandolinjeverktøy, men filen ‘ t finnes i mitt tilfelle. Glad for å gå med brygge skjønt (og siden giten min er med brygge også, kanskje klokere også).
  • Takk! IMO, dette skal være svaret med det grønne hakemerket.
  • Dette er den enkleste løsningen og det fungerer for meg
  • Dette fungerte for meg – selv om jeg brukte et litt annet format . 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
  • for meg fungerte svaret, men etter å ha lagt den gitte linjen til ~/.bash_profile ikke glem å også kjøre source ~/.bash_profile (spesielt hvis du oppretter ~/.bash_profile filen for første gang)

Svar

Her er hva som forvirrer noen av dere: du har brygge eller porter installert, men du bruker en systemgit i /usr/bin/. For å sjekke dette:

which git 

Hvis du ser /usr/bin/git, er ikke noe brygg konfigurert riktig, eller du » har ikke installert git via brygge.

Hvis du installerer git via brygge, vil aktivering av bash-fullføringer for brygge også aktivere bash-fullføringer for git. Dette er fordi /usr/local/etc/bash_completion faktisk kilder alt i /usr/local/bash_completion.d, og brygpakke for git installerer et git-ferdigstillingsskript der.

Kommentarer

  • Dette er fornuftig, men hvordan vil du » aktivere bash-fullføringer for brygge «? Du ‘ mangler hvordan du gjør det, dette skal være en del av svaret ditt
  • Jeg gjorde nettopp dette (det fungerer, takk) via simplified.guide/macos/bash-completion , men automatisk fullføring er et par sekunder forsinket … odd

Svar

Git autofullføring på Catalina og nyere (ved hjelp av Homebrew)

macOs endret fra bash til zsh som standard skall som starter med Catalina.
Så du vil trenger spesifikke autofullførte skript for zsh.

Slik installerer du dem med Homebrew:

brew install zsh-completion 

Brews zsh-komplettering inkluderer faktisk git-ferdigstillelse.

For å aktivere autofullføring må du legge til en liten blokk med kode til ~/.zshrc. Du må kanskje opprette den filen i brukermappen din hvis den ikke allerede eksisterer. Merk: Utgangen fra installasjonsskriptet ovenfor vil fortelle deg nøyaktig hvilken kode du skal legge til, så les det nøye og kopier derfra i tilfelle den er oppdatert siden jeg skrev her.

if type brew &>/dev/null; then FPATH=$(brew --prefix)/share/zsh-completions:$FPATH autoload -Uz compinit compinit fi 

Viktig:
Når installasjonen er fullført, les utgangen av installasjonsskriptet.
Den vil instruere deg ikke bare å legge til kode i .zshrc, men også gi deg råd om ytterligere handlinger som kan være nødvendige, som for eksempel gjenoppbygging av zcompdump. Men mest sannsynlig trenger du ikke de ekstra trinnene.

Kommentarer

  • Terminalen viser en irriterende melding hver gang at den ‘ er åpnet: zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]? Men det fungerer!
  • Jeg ble nettopp med i dette samfunnet slik at jeg kan ‘ t ennå svar, men jeg fant » oh-my-zsh » å være super super nyttig, og jeg liker virkelig brukergrensesnittet: github.com/ohmyzsh/ohmyzsh Dette er selvfølgelig for folk som bruker zsh. Jeg ‘ Jeg antar at det ikke fungerer ‘ for bash …

Svar

Du kan installere bash og git fra MacPorts med alternativet «bash_completion» aktivert. Det er trolig den enkleste måten å opprettholde både git og fullføringer.

http://denis.tumblr.com/post/71390665/adding-bash-completion-for-git-on-mac-os-x-snow-leopard

Slik installerer du MacPorts: http://www.macports.org/install.php/

Tilleggsinformasjon

Når det gjelder å finne fullføringsinnstillingene på Linux-systemet ditt, ta en titt i / etc /bash_completion.d/git (det er en lang fil). Kopiering av det i seg selv vil sannsynligvis ikke fungere, da det er designet for å bli hentet av fullføringsrammeverket gjennom / etc / bash_completion (som kommer fra /etc/profile.d/bash_completion.sh; filer i / etc / profile .d er hentet fra / etc / profile).

Svar

Hvis fullføringen av git er delvis ødelagt, selv etter sourcing https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash, kanskje du bare trenger å oppdatere git-versjonen din.

For eksempel når jeg skrev git check + TAB, ville det automatisk fullført git checkout. Men når jeg skrev git checkout + TAB, den viste ikke listen over grener, bare HEAD.

Løsningen for meg var å oppdatere git versjon. Jeg var på 2.7.0, som tilsynelatende ikke var kompatibel med den siste git-completion.bash. Jeg løp brew upgrade git, som oppdaterte den til 2.13.0, og nå er den prop fullfører automatisk filnavnene mine.

Kommentarer

  • Jeg fikk det samme problemet, men jeg måtte kjøre brew upgrade git og brew link git (med overstyring aktivert)
  • Takk for fangsten @Tope. Jeg har endret update til upgrade.

Svar

Den aller beste referansen jeg har funnet for å løse dette problemet, er på SpinDance , av Connor Livingston :

Hvis git- fullføring.bash skript eksisterer ikke på maskinen din. Hent det fra lenken jeg oppga ovenfor (som er denne ) og lagre den på din lokale maskin i en ny fil kalt git-complete.bash i /usr/local/etc/bash_completion.d/ katalog. Hvis git-complete.bash -skriptet eksisterer på maskinen din, men ikke er i /usr/local/etc/bash_completion.d/ katalogen, bør vi lage en kopi av den i den katalogen. En rask sudo cp /current/path/to/your/git-completion.bash /usr/local/etc/bash_completion.d/git-completion.bash burde gjøre susen. For de som er nysgjerrige på katalogen /usr/local/etc/bash_completion.d/ : den er for lagring av nye ferdigkommandoer, og du må kanskje opprette den hvis den ikke allerede finnes på din maskin.

På dette tidspunktet skal git-complete.bash-skriptet eksistere på din lokale maskin i katalogen /usr/local/etc/bash_completion.d/ . Nå kobler vi git-ferdigstillingsskriptet til bash ved å peke på det fra ~ / .bash_profile .

Merk: tilde i forrige setning refererer til hjemmekatalogen på datamaskinen din. Legg til følgende linje i ~ / .bash_profile : kilde /usr/local/etc/bash_completion.d/git-completion.bash og lagre. Det siste trinnet er å laste din bash-profil på nytt. Du kan oppnå dette ved å kjøre kilde ~ / .bash_profile i din nåværende bash-økt.

Svar

Installer oh-my-zsh og sett zsh som standard skall og takk meg senere 🙂

Kommentarer

  • Jeg har gjort det, nettopp i håp om ikke å ha for å håndtere det – fremdeles ingen grenforslag etter å ha trykket på fanen
  • Du trenger faktisk ikke ikke oh-my-zsh , eller til og med noe eget pluginsystem i det hele tatt! Git-ferdigstillelse kommer ut av boksen, du må bare aktivere den.

Svar

Prøvde det og det fungerer bra for grener, men når du gjør git st + tab så viser det feilen slik

ukjent alternativ: –list-cmds = list-mainporcelain, others, nohelpers, alias, list-complete, config usage: git [–version] [–help] [-C] [-c =] [–exec-path [=]] [–html-path] [–man-path] [–info-path] [-p | –paginate | –no-personsøker] [–no-erstatte-objekter] [–bare] [–git-dir =] [–work-tree =] [–namespace =] []

Søkte på internett og fant at --list-cmds i .git-completion.bash var i siste versjon av git og på Mac-en min var git-versjonen 2.17.2

Her er løsningene

Løsning 1

  1. Sjekk versjonen av git ved å bruke git --version -kommandoen
  2. Sett deretter samme versjonsnummer i url som jeg gjorde

    curl https://raw.githubusercontent.com/git/git/v2.17.2/contrib/completion/git-completion.bash -o ~/.git-completion.bash 
  3. Følg deretter de samme trinnene som i toppsvaret, legg koden under i ~/.bash_profile

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

Løsning 2

Du bør prøve å oppdatere git-versjonen til den nyeste, så skal den fungere.

Svar

De fleste brukere vil ha git installert som en del av xcode-kommandolinjen verktøy på /usr/bin/git og bash completio n regler for git vil være tilgjengelig på /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash.

I dette tilfellet er det ikke nødvendig å installere git fra Homebrew eller kildegjennomføringsregler fra raw.githubusercontent.com. Bare lag en symlink som følger:

cd /usr/local/etc/bash_completion.d/ ln -s /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash git 

Merk: sørg for at du har installert og konfigurert bash-completion -pakke fra Hjemmebrygging.

Svar

For macOS Catalina +, i zsh:

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

Oppdater deretter ~/.zshrc med:

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

Svar

Finn .bashrc -filen.

Åpne den og legg til denne linje nederst:

source /etc/bash_completion.d/git

Kommentarer

  • Jeg vet ikke ‘ t har noe en /etc/bash_completion.d/ -mappe, på et relativt nytt system (OSX 10.10.3).
  • Prøv å lage det.
  • Ikke bash_completion, git_completion som gjør forskjellige ting.
  • @MichaelDurrant Det fungerer. Stol på meg.;) prowrestlingtees.com / media / catalog / product / cache / 1 / image / …
  • @crmpicco Kan du gi instruksjoner for å lage /etc/bash_completion.d/git? Det ville gjøre svaret ditt mer verdifullt.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *