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 ramtem
Tab
for at gøre det autofuldførelse tilmaster
. - 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 standardgit
)brew install git
og genstart terminal for dem, der står over for underlige fejl 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
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øjebash-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 kommandoensource ~/.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 detif
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øresource ~/.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
ogbrew link git
(med tilsidesættelse aktiveret) - Tak for fangsten @Tope. Jeg har ændret
update
tilupgrade
.
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
- Kontroller versionen af git ved hjælp af
git --version
kommando -
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
-
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.