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 slog m Tab för att göra det autofullständigt till master.
  • 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 standard git) brew install git och starta om terminalen för dem som står inför konstiga fel 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

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 till bash-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 kommandot source ~/.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 det if -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öra source ~/.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 och brew link git (med åsidosättning aktiverad)
  • Tack för fångsten @Tope. Jag har ändrat update till upgrade.

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

  1. Kontrollera gitversionen med git --version -kommandot
  2. 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 
  3. 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.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *