På min Linux-maskin har jag autoslutför för filialer med Git.
[Obs vi talar om slutförande av git-gren, inte bash-slutförande (t.ex. kommandon, filer osv.). Således INTE Lanes svar alls]
Till exempel kan jag skriva git checkout
+ TAB och få en lista med grenar.
Eller så kan jag skriva git checkout feb*
+ TAB för att få alla grenar som börjar med ”feb”.
Hur kan jag få den här funktionen på en Mac?
Jag försökte ladda ner och köra bash-completion/bash_completion
och bash-completion/bash_completion.sh.in
men ingen glädje. Den första gav felmeddelanden om declare: -A invalid_option
. Den andra gav inga fel. När jag git checkout
+ TAB även om jag fortfarande får en lista med filer i katalogen, inte filialer. Jag är i projektroten.
Komplettera automatiskt för kataloger och bash-kommandon fungerar ok, så det är specifikt för Git.
Kommentarer
- Jag gick precis med i den här gruppen så att jag kan ’ ännu inte svara, men jag hittade ” oh-my-zsh ” för att vara super super hjälpsam och jag gillar verkligen gränssnittet: github.com/ohmyzsh/ohmyzsh Detta är naturligtvis för personer som använder zsh. Jag ’ antar att det inte ’ t fungerar för bash …
Svar
ok, så jag behövde git autoslutföringsskriptet.
Jag fick det från den här webbadressen:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
Du behöver inte oroa dig för vilken katalog du är i när du kör den som din hemkatalog (~
) används med målet.
Sedan lade jag till min ~/.bash_profile
-fil följande” kör om den finns ”-kod:
if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi
Uppdatering: Jag gör dessa kodbitar mer kortfattade för att krympa ner min .bashrc
-fil, i det här fallet Jag använder nu:
test -f ~/.git-completion.bash && . $_
Obs: $_
betyder det sista argumentet till föregående kommando. så . $_
betyder att du kör det – ”det” är .git-completion.bash
i det här fallet
Detta fungerar fortfarande på både Ubuntu och OSX och på maskiner utan skript .git-completion.bash
-skript.
Nu git
Flik ( faktiskt fungerar det ”s git
Tab Tab )!
ps: Om detta inte fungerar ”t job off the bat, you may need to run chmod u+x ~/.git-completion.bash
för att ge dig själv nödvändig behörighet:
-
chmod
är kommandot som ändrar filbehörigheter -
u
betyder användaren som äger filen, som standard dess skapare, dvs du -
+
betyder att du ställer in / aktiverar / lägger till en behörighet -
x
betyder exekveringsbehörighet, dvs. möjligheten att köra skript
Kommentarer
- Japp, starta om terminalen efter att ha lagt till bash-skriptet fick det att fungera. Jag satt här och undrade varför det fortsatte att försöka automatiskt slutföra till min
Models
-mapp när jag slogm
Tab
för att göra det autofullständigt tillmaster
. - Se även unix.stackexchange.com/q/ 48862/10043 för ett annat tips
- Om det accepterade svaret inte är ’ t fungerar för någon, försök detta:
source ~/.bash_profile
efter att ha klistrat in koden. Att starta om terminalen kommer också att göra samma sak. - Tack! Jag försökte några andra saker men ingenting fungerade (inklusive detta github.com/bobthecow/git-flow-completion/wiki/… ). Din lösning fungerade som en charm;)
- (du behöver ’ t har bryggt
git
men Apple är standardgit
)brew install git
och starta om terminalen för dem som står inför konstiga fel 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
Vissa föredrar att använda en pakethanterare för att automatisera installation, uppdatering och konfigurering av Mac OS-paket. Jag är ett fan av pakethanterare och jag tycker att Homebrew är den bästa pakethanteraren för Mac OS (vissa skulle säga att det är de facto Mac OS-pakethanteraren).
När du har installerat Homebrew, du kan helt enkelt installera git tillsammans med bash-complete med brew install git bash-completion
.
Du måste sedan lägga in följande i din ~/.bash_profile
:
if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then . `brew --prefix`/etc/bash_completion.d/git-completion.bash fi
(Obs! Om den här installationen misslyckas med ett 404-fel och du redan har git installerat, tar du bara bort git-delen av denna brygginstallation)
Mer information om att installera git och bash-komplettering med bryggning här.
Kommentarer
- Lägg till
git
och att lägga tillbash-completion
är inte alls detsamma som att lägga till.git-completion.bash
De är olika program och de gör helt olika saker – man gör bash-kommando autoslutförande och det andra gör git kommandot autoslutförande och ’ nair twainen kommer att träffas;) - fungerar som en charm, många tack. Kan du snälla förklara vad som är användning av skript som du har fått mig till i
~/.bash_profile
? - Trots vad andra har sagt om det här svaret är det den som fick git autofullständigt arbete jag n terminal.
- Observera att raderna som ska läggas till i
~/.bash_profile
specificerades för mig i utgången från homebrew. Jag använde dem istället för raderna ovan. Då måste du ladda om bash-profilen i varje terminalfönster som du vill använda autoslutförande i, med kommandotsource ~/.bash_profile
Svar
Kör detta på terminal:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
Gör sedan detta:
vi ~/.bash_profile
Lägg till dessa rader:
if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi
Det är allt. Det här fungerade för mig.
Kommentarer
- (andra steget) Om någon föredrar att öppna bash_profilen med en textredigerare, gör bara detta: öppna -e .bash_profile
- På en oskuld Mac OS High Sierra finns
~/.bash_profile
-filen inte ’ t. Den ’ är bra, bara skapa filen och placera detif
-skriptet där och spara. Ladda om ditt skal efter och det fungerar. - Detta fungerade för istället för vi (som jag alltid kämpar med) gör bara öppna -e ~ / .bash_profile
- För det andra steget behöver du den här länken
Svar
git
och git-completion.bash
kommer redan med macOS kommandoradsverktyg (xcode-select --install
). För att aktivera bash-autoslutförande, lägg till detta i din ~/.bash_profile
.
[ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ] && . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
Detta aktiverar också autoslutförande för git-grenar.
Kommentarer
- Ganska säker på att jag ’ har kommandoradsverktyg installerade, men den filen ’ finns inte i mitt fall. Men gärna med att brygga (och eftersom min git är med att brygga också, kanske klokare också).
- Tack! IMO, detta borde vara svaret med den gröna bocken.
- Det här är den enklaste lösningen och det fungerar för mig
- Detta fungerade för mig – även om jag använde ett något annat 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
- för mig fungerade svaret men efter att ha lagt till den angivna raden i
~/.bash_profile
glöm inte att också körasource ~/.bash_profile
(speciellt om du skapar~/.bash_profile
filen för första gången)
Svara
Här är vad som förvirrar några av er: du har brygga eller portar installerade, men du använder en systemgit i /usr/bin/
. För att kontrollera detta:
which git
Om du ser /usr/bin/git
är antingen brygga inte korrekt konfigurerad, eller så ” har inte installerat git via brygga.
Om du installerar git via bryggning aktiveras även bash-kompletteringar för git om du aktiverar bash-kompletteringar för bryggning. Detta beror på att /usr/local/etc/bash_completion
faktiskt köper allt i /usr/local/bash_completion.d
, och bryggaketet för git installerar ett git-kompletteringsskript där.
Kommentarer
- Det är vettigt, men hur skulle du ” aktivera bash-kompletteringar för bryggning ”? Du ’ saknar hur du gör det, detta borde vara en del av ditt svar
- Jag gjorde precis detta (det fungerar, tack) via simplified.guide/macos/bash-completion , men den automatiska slutföringen är ett par sekunder försenad … udda
Svar
Git autoslutförande på Catalina och nyare (med hjälp av Homebrew)
macOs har ändrats från bash till zsh som standardskal som börjar med Catalina.
Så du kommer behöver specifika autofullständiga skript för zsh.
Så här installerar du dem med Homebrew:
brew install zsh-completion
Brews zsh-komplettering inkluderar faktiskt git-komplettering.
För att aktivera autoslutförande måste du lägga till ett litet kodblock i din ~/.zshrc
. Du kan behöva skapa den filen i din användarmapp om den inte redan finns. Obs: Utgången från ovanstående installationsskript berättar exakt vilken kod du ska lägga till, så läs noga och kopiera därifrån om det har uppdaterats sedan jag skrev här.
if type brew &>/dev/null; then FPATH=$(brew --prefix)/share/zsh-completions:$FPATH autoload -Uz compinit compinit fi
Viktigt:
När installationen är klar läser utdata från installationsskriptet.
Det kommer att instruera dig att inte bara lägga till kod till .zshrc utan också ge dig råd om ytterligare åtgärder som kan vara nödvändiga, som att återuppbygga zcompdump. Men troligtvis behöver du inte de ytterligare stegen.
Kommentarer
- Terminalen visar ett irriterande meddelande varje gång att det ’ öppnade:
zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]?
Men det fungerar! - Jag gick precis med i den här gruppen så att jag kan ’ t svarar ännu, men jag tyckte att ” oh-my-zsh ” var super super hjälpsam och jag gillar verkligen användargränssnittet: github.com/ohmyzsh/ohmyzsh Detta är naturligtvis för personer som använder zsh. Jag ’ antar att det inte ’ t fungerar för bash …
Svar
Du kan installera bash och git från MacPorts med alternativet ”bash_completion” aktiverat. Det är förmodligen det enklaste sättet att hålla både git och kompletteringar uppdaterade.
http://denis.tumblr.com/post/71390665/adding-bash-completion-for-git-on-mac-os-x-snow-leopard
Så här installerar du MacPorts: http://www.macports.org/install.php/
Ytterligare information
När det gäller att hitta kompletteringsinställningarna på ditt Linux-system, kolla in / etc /bash_completion.d/git (det är en lång fil). Kopiering av det i sig kommer troligen inte att fungera, eftersom det är utformat för att hämtas av kompletteringsramen genom / etc / bash_completion (som kommer från /etc/profile.d/bash_completion.sh; filer i / etc / profile .d kommer från / etc / profile).
Svar
Om din komplettering av git delvis är trasig, även efter sourcing https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
, du kanske bara behöver uppdatera din git-version.
Till exempel när jag skrev git check
+ TAB
skulle det automatiskt slutföra git checkout
. Men när jag skrev git checkout
+ TAB
, det visade inte listan med grenar, bara HEAD
.
Korrigeringen för mig var att uppdatera min git
version. Jag var 2.7.0, vilket tydligen inte var kompatibel med den senaste git-completion.bash
. Jag sprang brew upgrade git
, som uppdaterade den till 2.13.0, och nu är den prop fyller i mina filialnamn automatiskt.
Kommentarer
- Jag fick samma problem, men jag var tvungen att köra
brew upgrade git
ochbrew link git
(med åsidosättning aktiverad) - Tack för fångsten @Tope. Jag har ändrat
update
tillupgrade
.
Svar
Den bästa referensen jag har hittat för att lösa just detta är på SpinDance , av Connor Livingston :
Om git- complete.bash -skriptet finns inte på din maskin. Hämta det från länken som jag angav ovan (som är den här ) och spara den på din lokala maskin i en ny fil som heter git-complet.bash i /usr/local/etc/bash_completion.d/ katalog. Om git-complete.bash -skript finns på din maskin, men inte finns i /usr/local/etc/bash_completion.d/ katalogen, bör vi skapa en kopia av den i den katalogen. En snabb sudo cp /current/path/to/your/git-completion.bash /usr/local/etc/bash_completion.d/git-completion.bash borde göra tricket. För dem som är nyfikna på katalogen /usr/local/etc/bash_completion.d/ : den är för att lagra nya kompletteringskommandon, och du kan behöva skapa den om den inte redan finns på din maskin.
Vid denna tidpunkt bör git-complet.bash-skriptet finnas på din lokala maskin i katalogen /usr/local/etc/bash_completion.d/ . Nu kopplar vi git-kompletteringsskriptet till bash genom att peka på det från ~ / .bash_profile .
Obs! Tilde i föregående mening hänvisar till hemkatalogen på din dator. Lägg till följande rad i ~ / .bash_profile : källa /usr/local/etc/bash_completion.d/git-completion.bash och spara. Det sista steget är att ladda om din bash-profil. Du kan uppnå detta genom att köra source ~ / .bash_profile i din nuvarande bash-session.
Svar
Installera oh-my-zsh och ställ in zsh som ditt standardskal och tacka mig senare 🙂
Kommentarer
- Jag har gjort det, just i hopp om att inte ha för att hantera det – fortfarande inga grenförslag efter att ha tryckt på fliken
- Du behöver faktiskt inte oh-my-zsh eller till och med något separat pluginsystem alls! Git-slutförande kommer ur lådan, du måste bara aktivera det.
Svar
Testade det och det fungerar bra för grenar men när du gör git st
+ tab
så visar det felet så här
okänt alternativ: –list-cmds = list-mainporcelain, andra, nohelpers, alias, lista komplett, konfigurationsanvändning: git [–version] [–help] [-C] [-c =] [–exec-path [=]] [–html-path] [–man-path] [–info-path] [-p | –paginera | –no-pager] [–no-replace-objects] [–bare] [–git-dir =] [–work-tree =] [–namespace =] []
Sökte på internet och fann att --list-cmds
i .git-completion.bash
var i den senaste versionen av git och på min mac var git-versionen 2.17.2
Här är lösningarna
Lösning 1
- Kontrollera gitversionen med
git --version
-kommandot -
Lägg sedan samma version i webbadressen som jag gjorde
curl https://raw.githubusercontent.com/git/git/v2.17.2/contrib/completion/git-completion.bash -o ~/.git-completion.bash
-
Följ sedan samma steg som i det översta svaret, placera koden nedan i
~/.bash_profile
if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi
Lösning 2
Du bör försöka uppdatera git-versionen till den senaste så ska den fungera.
Svar
De flesta användare har git
installerat som en del av xcode-kommandoraden verktyg vid /usr/bin/git
och bash completio n-regler för git kommer att finnas tillgängliga på /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
.
I det här fallet behöver du inte installera git från Homebrew eller källkodsavslutningsregler från raw.githubusercontent.com. Skapa bara en symlänk enligt följande:
cd /usr/local/etc/bash_completion.d/ ln -s /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash git
Obs: se till att du har installerat och konfigurerat bash-completion
paket från Homebrew.
Svar
För macOS Catalina +, i zsh
:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh -o ~/.git-completion.zsh
Uppdatera sedan din ~/.zshrc
med:
if [ -f ~/.git-completion.zsh ]; then . ~/.git-completion.zsh fi
Svar
Leta upp din .bashrc
-fil.
Öppna den och lägg till den här raden längst ner:
source /etc/bash_completion.d/git
Kommentarer
- Jag don ’ t har något en
/etc/bash_completion.d/
-mapp på ett relativt nytt system (OSX 10.10.3). - Försök skapa det.
- Inte bash_completion, git_completion som gör olika saker.
- @MichaelDurrant Det fungerar. Tro mig.;) prowrestlingtees.com / media / katalog / produkt / cache / 1 / bild / …
- @crmpicco Kan du ge instruktioner för att skapa
/etc/bash_completion.d/git
? Det skulle göra ditt svar mer värdefullt.