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.
Nå 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 traffm
Tab
for å gjøre det autofullfør tilmaster
. - 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 standardgit
)brew install git
og start terminalen på nytt for de som står overfor rare feil somgit 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 tilbash-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 kommandoensource ~/.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 detif
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øresource ~/.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
ogbrew link git
(med overstyring aktivert) - Takk for fangsten @Tope. Jeg har endret
update
tilupgrade
.
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
- Sjekk versjonen av git ved å bruke
git --version
-kommandoen -
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
-
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.