På min Linux-maskine har jeg autofuldførelse til filialer med Git.

[Bemærk, vi taler om git filafslutning, ikke bash-færdiggørelse (f.eks. kommandoer, filer osv.). Således IKKE Lanes svar overhovedet]

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

Eller jeg kan skrive git checkout feb* + TAB for at få alle grene, der begynder med “feb”.

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

Jeg prøvede at downloade og køre bash-completion/bash_completion og bash-completion/bash_completion.sh.in men ingen glæde. Den første gav fejlmeddelelser om declare: -A invalid_option. Den anden gav ingen fejl. Når jeg git checkout + TAB selvom jeg stadig får en liste over filer i biblioteket, ikke filialer. Jeg er i projektets rod.

Udfyld automatisk for mapper og bash-kommandoer fungerer ok, så det er specifikt for Git.

Kommentarer

  • Jeg tilmeldte mig netop denne gruppe, så jeg kan ‘ endnu ikke besvare, men jeg fandt ” oh-my-zsh ” for at være super super hjælpsom, og jeg kan virkelig godt lide brugergrænsefladen: github.com/ohmyzsh/ohmyzsh Dette er selvfølgelig for folk, der bruger zsh. Jeg ‘ antager, at det ikke fungerer ‘ for bash …

Svar

ok, så jeg havde brug for git autofuldførelsesscriptet.

Jeg fik det fra denne url:

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

Ingen grund til at bekymre sig om, hvilken mappe du “befinder dig i, når du kører denne som din hjemmemappe (~) bruges sammen med målet.

Derefter tilføjede jeg til min ~/.bash_profile -fil følgende” udfør, hvis den findes “-kode:

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

Opdatering: Jeg gør disse kodestykker mere koncise for at krympe ned i min .bashrc -fil, i dette tilfælde Jeg bruger nu:

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

Bemærk: $_ betyder det sidste argument til den forrige kommando. så . $_ betyder at køre det – “det” er .git-completion.bash i dette tilfælde

Dette fungerer stadig på både Ubuntu og OSX og på maskiner uden scriptet .git-completion.bash script.

Nu git Tab ( faktisk fungerer det “s git Tab Tab ) som en charme!

ps: Hvis dette ikke virker “t arbejde ud af flagermusen, skal du muligvis køre chmod u+x ~/.git-completion.bash for at give dig selv den nødvendige tilladelse:

  • chmod er den kommando, der ændrer filtilladelser
  • u betyder den bruger, der ejer filen, som standard dens skaber, dvs. du
  • + betyder at indstille / aktivere / tilføje en tilladelse
  • x betyder udføre tilladelse, dvs. evnen til at køre script

Kommentarer

  • Ja, ved at genstarte terminalen efter tilføjelse af bash-scriptet fik det til at fungere. Jeg sad her og spekulerede på, hvorfor det fortsatte med at forsøge at autofuldføre til min Models mappe, da jeg ramte m Tab for at gøre det autofuldførelse til master.
  • Se også unix.stackexchange.com/q/ 48862/10043 for et andet tip
  • Hvis det accepterede svar ikke er ‘ t fungerer for nogen, så prøv dette: source ~/.bash_profile efter at have indsat koden. At genstarte terminalen vil også gøre det samme.
  • Tak! Jeg prøvede nogle andre ting, men intet fungerede (inklusive dette github.com/bobthecow/git-flow-completion/wiki/… ). Din løsning fungerede som en charme;)
  • (du har ikke ‘ t har brygget git men Apple er standard git) brew install git og genstart terminal for dem, der står over for underlige fejl 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

Nogle mennesker foretrækker at bruge en pakkehåndtering til at automatisere installation, opdatering og konfiguration af Mac OS-pakker. Jeg er fan af pakkehåndtering, og jeg synes, Homebrew er den bedste pakkehåndtering til Mac OS (nogle vil sige, at det er de facto Mac OS pakkehåndtering).

Når du har installeret Homebrew, du kan simpelthen installere git sammen med bash-gennemførelse med brew install git bash-completion.

Du skal derefter sætte følgende 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 

(Bemærk: Hvis denne installation mislykkes med en 404-fejl, og du allerede har git installeret, skal du bare fjerne git-delen af denne bryginstallation)

Mere info om installation af git og bash-afslutning med bryg her.

Kommentarer

  • Tilføjelse af git og at tilføje bash-completion er slet ikke det samme som at tilføje .git-completion.bash De er forskellige programmer og de gør helt forskellige ting – man gør bash-kommando autocompletion og den anden kommanderer git autocompletion og ‘ nair twainen mødes;)
  • fungerer som en charme, mange tak. Kan du venligst forklare hvad der er brug af script, som du har fået mig tilføjet i ~/.bash_profile?
  • På trods af hvad andre har sagt om dette svar, er det den, der fik git til autofuldførelse til at arbejde jeg n terminal.
  • Bemærk, at linjerne, der skal tilføjes til ~/.bash_profile, blev angivet for mig i output fra hjemmebrygget. Jeg brugte dem i stedet for linjerne ovenfor. Derefter skal du genindlæse bash-profilen i hvert terminalvindue, du gerne vil bruge autofuldførelse i, ved hjælp af kommandoen source ~/.bash_profile

Svar

Kør dette på terminal:

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

Gør derefter dette:

vi ~/.bash_profile 

Tilføj disse linjer:

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

Det er alt sammen. Dette fungerede for mig.

Kommentarer

  • (2. trin) Hvis nogen foretrækker at åbne bash_profilen med en teksteditor, skal du bare gøre dette: åben -e .bash_profile
  • På en jomfruelig Mac OS High Sierra findes ~/.bash_profile -filen ikke ‘ t. Den ‘ er fint, skal du bare oprette filen og placere det if script derinde og gemme. Genindlæs din shell efter, så fungerer den.
  • Dette fungerede for mig. I stedet for vi (som jeg altid kæmper med) skal du bare åbne -e ~ / .bash_profile
  • For det andet trin skal du bruge dette link

Svar

git og git-completion.bash kommer allerede med macOS kommandolinjeværktøjer (xcode-select --install). For at aktivere bash-autofuldførelse skal du tilføje dette til din ~/.bash_profile.

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

Dette aktiverer også autofuldførelse for git-grene.

Kommentarer

  • Ganske sikker på, at jeg ‘ har kommandolinjeværktøjer installeret, men den fil ‘ t findes i mit tilfælde. Dog glad for at gå med brygge (og da min git er med bryg også måske klogere også).
  • Tak! IMO, dette skal være svaret med det grønne flueben.
  • Dette er den mest ligefremme løsning, og det fungerer for mig
  • Dette fungerede for mig – selvom jeg brugte et lidt andet 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 mig fungerede svaret, men efter at have tilføjet den givne linje til ~/.bash_profile glem ikke at også køre source ~/.bash_profile (især hvis du opretter ~/.bash_profile filen for første gang)

Svar

Her er hvad der forvirrer nogle af jer: du har bryg eller havne installeret, men du bruger en systemgit i /usr/bin/. For at kontrollere dette:

which git 

Hvis du ser /usr/bin/git, er begge bryg ikke korrekt konfigureret, eller du ” har ikke installeret git via bryg.

Hvis du installerer git via bryg, vil aktivering af bash-afslutninger for bryg også også muliggøre bash-kompletteringer for git. Dette skyldes, at /usr/local/etc/bash_completion faktisk kilder alt i /usr/local/bash_completion.d, og brygpakken til git installerer et git-komplet-script der.

Kommentarer

  • Dette giver mening, men hvordan ville du ” aktivere bash-afslutninger for brygning “? Du ‘ mangler, hvordan du gør det, dette skal være en del af dit svar
  • Jeg har lige gjort det (det virker, tak) via simplified.guide/macos/bash-completion , men den automatiske afslutning er et par sekunder forsinket … ulige

Svar

Git autofuldførelse på Catalina og nyere (ved hjælp af Homebrew)

macOer ændret fra bash til zsh som standardskall startende med Catalina.
Så du vil har brug for specifikke autokomplette scripts til zsh.

Sådan installeres dem med Homebrew:

brew install zsh-completion 

Brews zsh-gennemførelse inkluderer faktisk git-gennemførelse.

For at aktivere autofuldførelse skal du tilføje en lille blok kode til din ~/.zshrc. Du bliver muligvis nødt til at oprette filen i din brugermappe, hvis den ikke allerede findes. Bemærk: Outputtet fra ovenstående installationsscript fortæller dig nøjagtigt, hvilken kode du skal tilføje, så læs det grundigt og kopier derfra hvis det er blevet opdateret siden min skrivning her.

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

Vigtigt:
Når installationen er afsluttet, skal læse output fra installationsscriptet.
Det vil instruere dig ikke kun at tilføje kode til .zshrc, men også give dig råd om yderligere handlinger, der kan være nødvendige, som f.eks. kraftgenopbygning af zcompdump. Men sandsynligvis har du ikke brug for de ekstra trin.

Kommentarer

  • Terminalen viser en irriterende besked, hver gang den ‘ er åbnet: zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]? Men det fungerer!
  • Jeg er lige blevet medlem af denne gruppe, så jeg kan ‘ t svar endnu, men jeg fandt ” oh-my-zsh ” at være super super hjælpsom, og jeg kan virkelig godt lide brugergrænsefladen: github.com/ohmyzsh/ohmyzsh Dette er selvfølgelig for folk, der bruger zsh. Jeg ‘ antager, at det ikke fungerer ‘ for bash …

Svar

Du kan installere bash og git fra MacPorts med muligheden “bash_completion” aktiveret. Det er sandsynligvis den nemmeste måde at holde både git og færdiggørelser opdateret.

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

Sådan installeres MacPorts: http://www.macports.org/install.php/

Yderligere oplysninger

Hvad angår lokalisering af færdiggørelsesindstillingerne på dit Linux-system, skal du kigge ind i / etc /bash_completion.d/git (det er en lang fil). Kopiering af det i sig selv vil sandsynligvis ikke fungere, da det er designet til at blive hentet af færdiggørelsesrammen gennem / etc / bash_completion (som kommer fra /etc/profile.d/bash_completion.sh; filer i / etc / profile .d kommer fra / etc / profil).

Svar

Hvis din git-færdiggørelse er delvist brudt, selv efter sourcing https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash, du skal muligvis bare opdatere din git-version.

For eksempel når jeg skrev git check + TAB, ville det korrekt autofuldføre git checkout. Men når jeg skrev git checkout + TAB, det viste ikke listen over grene, kun HEAD.

Løsningen for mig var at opdatere min git version. Jeg var på 2.7.0, som tilsyneladende ikke var kompatibel med den nyeste git-completion.bash. Jeg løb brew upgrade git, som opdaterede den til 2.13.0, og nu er den prop fuldfører automatisk mine grennavne automatisk.

Kommentarer

  • Jeg fik det samme problem, men jeg var nødt til at køre brew upgrade git og brew link git (med tilsidesættelse aktiveret)
  • Tak for fangsten @Tope. Jeg har ændret update til upgrade.

Svar

Langt den bedste reference, jeg har fundet til at løse netop dette problem, er på SpinDance , ved Connor Livingston :

Hvis git- complete.bash script findes ikke på din maskine, bedes du hente det fra det link, jeg har angivet ovenfor (hvilket er dette ) og gem den på din lokale maskine i en ny fil kaldet git-complet.bash i /usr/local/etc/bash_completion.d/ mappe. Hvis git-complete.bash script findes på din maskine, men ikke findes i mappen /usr/local/etc/bash_completion.d/ , skal vi oprette en kopi af den i den mappe. En hurtig sudo cp /current/path/to/your/git-completion.bash /usr/local/etc/bash_completion.d/git-completion.bash skal gøre tricket. For dem, der er nysgerrige efter biblioteket /usr/local/etc/bash_completion.d/ : det er til lagring af nye færdigkommandoer, og du bliver muligvis nødt til at oprette den, hvis den ikke allerede findes på din maskine.

På dette tidspunkt skal git-complet.bash-scriptet findes på din lokale maskine i mappen /usr/local/etc/bash_completion.d/ . Nu tilslutter vi git-færdiggørelsesskriptet til bash ved at pege på det fra ~ / .bash_profile .

Bemærk: tilde i forrige sætning henviser til hjemmekataloget på din computer. Føj følgende linje til ~ / .bash_profile : kilde /usr/local/etc/bash_completion.d/git-completion.bash og gem. Det sidste trin er at genindlæse din bash-profil. Du kan opnå dette ved at køre kilde ~ / .bash_profile i din nuværende bash-session.

Svar

Installer oh-my-zsh og indstil zsh som din standard shell og tak mig senere 🙂

Kommentarer

  • Jeg har gjort det, netop i håb om ikke at have for at håndtere det – stadig ingen filialforslag efter at have ramt fanen
  • Du har faktisk ikke brug for oh-my-zsh eller endda noget separat pluginsystem overhovedet! Git-færdiggørelse kommer ud af kassen, du skal bare aktivere den.

Svar

Forsøgte det og det fungerer godt til grene, men når du gør git st + tab så viser det fejlen som denne

ukendt indstilling: –list-cmds = list-mainporcelain, andre, nohelpers, alias, liste-komplet, konfigurationsbrug: git [–version] [–help] [-C] [-c =] [–exec-sti [=]] [–html-sti] [–man-sti] [–info-sti] [-p | –paginate | –no-pager] [–no-replacement-objects] [–bare] [–git-dir =] [–work-tree =] [–namespace =] []

Søgte på internettet og fandt ud af, at --list-cmds i .git-completion.bash var i den nyeste version af git og på min mac var git-versionen 2.17.2

Her er løsningerne

Løsning 1

  1. Kontroller versionen af git ved hjælp af git --version kommando
  2. Sæt derefter det samme versionsnummer 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 derefter de samme trin som i det øverste svar, sæt nedenstående kode i ~/.bash_profile

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

Løsning 2

Du skal prøve at opdatere git-versionen til den nyeste, så den skal fungere.

Svar

De fleste brugere har git installeret som en del af xcode-kommandolinjen værktøjer til /usr/bin/git og bash completio n regler for git vil være tilgængelige på /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash.

I dette tilfælde er det ikke nødvendigt at installere git fra Homebrew eller kildegit-gennemførelsesregler fra raw.githubusercontent.com. Opret blot et symlink som følger:

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

Bemærk: Sørg for, at du har installeret og konfigureret bash-completion -pakke fra Homebrew.

Svar

For macOS Catalina +, i zsh:

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

Opdater derefter din ~/.zshrc med:

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

Svar

Find din .bashrc -fil.

Åbn den, og tilføj denne linje nederst:

source /etc/bash_completion.d/git

Kommentarer

  • Jeg don ‘ har ikke en /etc/bash_completion.d/ mappe på et relativt nyt system (OSX 10.10.3).
  • Prøv at oprette det.
  • Ikke bash_completion, git_completion, der gør forskellige ting.
  • @MichaelDurrant Det virker. Tro mig.;) prowrestlingtees.com / medier / katalog / produkt / cache / 1 / billede / …
  • @crmpicco Kunne du give instruktioner til oprettelse af /etc/bash_completion.d/git? Det ville gøre dit svar mere værdifuldt.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *