Na svém stroji se systémem Linux mám automatické doplňování pro pobočky s Gitem.

[Všimněte si, že mluvíme o dokončení větve git, ne dokončení bash (např. příkazy, soubory atd.). Proto NENÍ Laneova odpověď vůbec]

Například mohu napsat git checkout + TAB a získejte seznam poboček.

Nebo mohu zadat git checkout feb* + TAB a získat všechny větve, které začínají na „feb“.

Jak mohu získat tuto funkci na počítači Mac?

Zkoušel jsem stáhnout a spustit bash-completion/bash_completion a bash-completion/bash_completion.sh.in ale žádná radost. První poskytl chybové zprávy o declare: -A invalid_option. Druhý nedal žádné chyby. Když jsem git checkout + TAB i když stále dostávám seznam souborů v adresáři, ne ve větvích. Jsem v kořenovém adresáři projektu.

Automatické doplňování adresářů a příkazy bash fungují dobře, takže je to specifické pro Git.

Komentáře

  • Právě jsem se připojil k této komunitě, takže nemohu ‚ zatím odpovědět, ale našel jsem “ oh-my-zsh “ být super super užitečný a opravdu se mi líbí uživatelské rozhraní: github.com/ohmyzsh/ohmyzsh To je samozřejmě pro lidi používající zsh. ‚ m za předpokladu, že ‚ nepracuje pro bash …

Odpověď

ok, potřeboval jsem tedy skript automatického doplňování git .

Získal jsem to z této adresy URL:

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

Není třeba se bát, v jakém adresáři se nacházíte, když jej spustíte jako domovský adresář (~) se používá s cílem.

Poté jsem do svého ~/.bash_profile souboru přidal následující kód„ spustit, pokud existuje “:

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

Aktualizace: Dělám tyto kousky kódu výstižnější, abych zmenšil můj .bashrc soubor, v tomto případě Nyní používám:

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

Poznámka: $_ znamená poslední argument předchozího příkazu. . $_ tedy znamená spustit – „it“ v tomto případě .git-completion.bash

Toto stále funguje na Ubuntu i OSX a na strojích bez skriptu .git-completion.bash skriptu.

Nyní git Tab ( ve skutečnosti to „s git Tab karta ) funguje jako kouzlo!

ps: Pokud to tak není Pokud netopýra odpálíte, možná budete muset spustit chmod u+x ~/.git-completion.bash, abyste si udělali potřebná oprávnění:

  • chmod je příkaz, který upravuje oprávnění souboru
  • u znamená uživatele, který soubor vlastní, ve výchozím nastavení jeho tvůrce, tj. vy
  • + znamená nastavit / aktivovat / přidat oprávnění
  • x znamená vykonat oprávnění, tj. schopnost spustit skript

Komentáře

  • Ano, restartování terminálu po přidání bash skriptu to fungovalo. Seděl jsem tady a přemýšlel, proč se to stále pokoušelo automaticky doplňovat do mé Models složky, když jsem narazil na m Tab, aby bylo automatické doplňování master.
  • Viz také unix.stackexchange.com/q/ 48862/10043 pro jiný tip
  • Pokud přijatá odpověď ‚ nefunguje nikomu, zkuste toto: source ~/.bash_profile po vložení kódu. Restartování terminálu také udělá totéž.
  • Děkuji! Zkoušel jsem nějaké jiné věci, ale nic nefungovalo (včetně tohoto github.com/bobthecow/git-flow-completion/wiki/… ). Vaše řešení fungovalo jako kouzlo;)
  • (‚ nemáte brew git, ale Apple výchozí git) brew install git a restartujte terminál pro ty, kteří čelí podivné chybě jako 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>]

Odpověď

Někteří lidé dávají přednost automatizaci instalace, aktualizace a konfigurace balíčků Mac OS pomocí správce balíčků. Jsem fanouškem správců balíčků a myslím si, že Homebrew je nejlepší správce balíčků pro Mac OS (někdo by řekl, že je to de facto správce balíčků Mac OS).

Jakmile si Homebrew nainstalujete, můžete jednoduše nainstalovat git společně s bash-dokončení s brew install git bash-completion.

Do svého ~/.bash_profile pak budete muset vložit následující:

if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then . `brew --prefix`/etc/bash_completion.d/git-completion.bash fi 

(Poznámka: Pokud tato instalace selže s chybou 404 a již máte nainstalovaný git, jednoduše odeberte gitovou část této instalace brew)

Další informace o instalaci git a bash-dokončení s brew zde.

Komentáře

  • Přidání git a přidání bash-completion není vůbec stejné jako přidání .git-completion.bash Jsou to různé programy a dělají úplně jiné věci – jeden dělá příkaz bash autocompletion a druhý příkaz git autocompletion a ‚ nair, se kterým se setká Twain;)
  • fungují jako kouzlo, moc děkuji. Můžete mi prosím vysvětlit, co je použití skriptu, který jste mi přidali do ~/.bash_profile?
  • Navzdory tomu, co o této odpovědi řekli ostatní, je to ten, díky kterému funguje automatické dokončování git i n terminál.
  • Všimněte si, že řádky, které se mají přidat do ~/.bash_profile, byly pro mě specifikovány ve výstupu homebrew. Použil jsem ty místo výše uvedených řádků. Poté musíte znovu načíst profil bash v každém okně terminálu, ve kterém chcete použít automatické doplňování, pomocí příkazu source ~/.bash_profile

Odpovědět

Spustit na terminálu:

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

Potom postupujte takto:

vi ~/.bash_profile 

Přidejte tyto řádky:

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

To je vše. Toto pro mě fungovalo.

Komentáře

  • (2. krok) Pokud někdo dává přednost otevření bash_profile v textovém editoru, udělejte to takto: open -e .bash_profile
  • V panenském systému Mac OS High Sierra soubor ~/.bash_profile neexistuje ‚. To ‚ v pohodě stačí vytvořit soubor a umístit tam if skript a uložit. Poté znovu načtěte shell a bude to fungovat.
  • Toto fungovalo pro já. Místo vi (s čím vždy bojuji) prostě udělejte open -e ~ / .bash_profile
  • Pro 2. krok budete potřebovat tento odkaz

odpověď

git a git-completion.bash již jsou dodávány s nástroji příkazového řádku macOS (xcode-select --install). Chcete-li povolit automatické doplňování bash, přidejte toto do svého ~/.bash_profile.

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

Tím se také povolí automatické doplňování pro pobočky git.

Komentáře

  • Jsem si jistý, že mám ‚ nainstalované nástroje příkazového řádku, ale tento soubor ‚ v mém případě neexistují. Rád však s vařením (a protože můj git je také s vařením, možná také moudřejší).
  • Díky! IMO, toto by měla být odpověď se zeleným zatržítkem.
  • Toto je nejpřímější řešení a funguje to pro mě
  • Toto fungovalo pro mě – i když jsem použil trochu jiný formát . 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
  • pro mě odpověď fungovala, ale po přidání daného řádku do ~/.bash_profile nezapomeňte také spustit source ~/.bash_profile (zejména pokud soubor ~/.bash_profile vytvoříte poprvé)

Odpověď

Někteří z vás matou: Co je to, máte nainstalovaný brew nebo porty, ale používáte systémový git v /usr/bin/. Chcete-li to zkontrolovat:

which git 

Pokud vidíte /usr/bin/git, pak není správně nakonfigurován vařit, nebo vy “ Nejsem nainstalován git via brew.

Pokud nainstalujete git via brew, pak povolení bash dokončení pro brew umožní také bash dokončení pro git. Důvodem je, že /usr/local/etc/bash_completion ve skutečnosti získává vše z /usr/local/bash_completion.d a balíček brew pro git tam nainstaluje skript dokončení git.

Komentáře

  • To dává smysl, ale jak byste “ povolili dokončení bash pro brew „? ‚ Chybí vám, jak to udělat, mělo by to být součástí vaší odpovědi
  • Právě jsem to udělal (funguje, děkuji) prostřednictvím simplified.guide/macos/bash-completion , ale automatické dokončení je o pár sekund zpožděno … zvláštní

Odpověď

Automatické doplňování Git na Catalině a novějších (pomocí Homebrew)

macO změněno z bash zsh jako výchozí shell počínaje Catalinou.
Takže budete potřebujete specifické skripty automatického doplňování pro zsh.

Zde je návod, jak je nainstalovat pomocí Homebrew:

brew install zsh-completion 

Zsh-dokončení Brew ve skutečnosti zahrnuje git-dokončení.

Chcete-li aktivovat automatické doplňování, musíte do svého ~/.zshrc přidat malý blok kódu. Tento soubor možná budete muset vytvořit ve své uživatelské složce, pokud ještě neexistuje. Poznámka: Výstup výše uvedeného instalačního skriptu vám řekne přesně, jaký kód přidat, takže si ho pečlivě přečtěte a zkopírujte jej pro případ, že by to bylo od mého psaní zde aktualizováno.

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

Důležité:
Po dokončení instalace přečíst výstup instalačního skriptu.
It vás naučí nejen přidat kód do .zshrc, ale také vám poradí ohledně dalších akcí, které mohou být nutné, jako je vynucení nového sestavení zcompdump. Ale s největší pravděpodobností nebudete potřebovat další kroky.

Komentáře

  • Terminál pokaždé zobrazí nepříjemnou zprávu, že ‚ s otevřeno: zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]? ale funguje to!
  • Právě jsem se připojil k této komunitě, abych mohl ‚ zatím neodpovídám, ale shledal jsem, že “ oh-my-zsh “ je super super užitečný a opravdu se mi líbí uživatelské rozhraní: github.com/ohmyzsh/ohmyzsh To je samozřejmě pro lidi, kteří používají zsh. ‚ m za předpokladu, že ‚ nepracuje pro bash …

Odpověď

Můžete nainstalovat bash a git z MacPorts s povolenou možností „bash_completion“. Je to pravděpodobně nejjednodušší způsob, jak udržovat git i dokončení aktuální.

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

Chcete-li nainstalovat MacPorts: http://www.macports.org/install.php/

Další informace

Pokud jde o vyhledání nastavení dokončení ve vašem systému Linux, podívejte se do / etc /bash_completion.d/git (je to dlouhý soubor). Kopírování to samo o sobě pravděpodobně nebude fungovat, protože je navrženo tak, aby bylo získáno rámcem dokončení prostřednictvím / etc / bash_completion (který pochází z /etc/profile.d/bash_completion.sh; soubory v / etc / profile .d jsou získávány z / etc / profile).

Odpovědět

Pokud je vaše dokončení git částečně přerušeno, i po získání zdroje https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash, možná budete muset aktualizovat svou verzi git.

Například když jsem zadal git check + TAB, správně by se dokončilo git checkout. Když jsem ale napsal git checkout + TAB, nezobrazil seznam poboček, pouze HEAD.

Oprava pro mě byla aktualizace mého git verzi. Byl jsem na verzi 2.7.0, která zjevně nebyla kompatibilní s nejnovější git-completion.bash. Spustil jsem brew upgrade git, který jej aktualizoval na 2.13.0 a nyní prop erly autocompletes my branch names.

Komentáře

  • Dostával jsem stejný problém, ale musel jsem spustit brew upgrade git a brew link git (se zapnutým přepsáním)
  • Děkujeme za úlovek @Tope. Změnil jsem update na upgrade.

Odpovědět

Zdaleka nejlepší reference, kterou jsem našel k vyřešení tohoto problému, je na SpinDance , autorem Connor Livingston :

Pokud git- completion.bash skript na vašem počítači neexistuje, načtěte jej z odkazu, který jsem uvedl výše (což je tento ) a uložte jej do místního počítače do nového souboru s názvem git-completion.bash v /usr/local/etc/bash_completion.d/ adresář. Pokud existuje skript git-completion.bash na vašem počítači, ale nenachází se v adresáři /usr/local/etc/bash_completion.d/ , měli bychom vytvořit jeho kopii v tomto adresáři. Rychlý sudo cp /current/path/to/your/git-completion.bash /usr/local/etc/bash_completion.d/git-completion.bash by měl stačit. Pro ty, kteří jsou zvědaví na adresář /usr/local/etc/bash_completion.d/ : je to pro ukládání nových příkazů pro dokončení a možná ho budete muset vytvořit, pokud ve vašem stroj.

V tomto okamžiku by měl skript git-completion.bash existovat na místním počítači v adresáři /usr/local/etc/bash_completion.d/ . Nyní připojíme skript dokončení git do bash tak, že na něj ukážeme z ~ / .bash_profile .

Poznámka: Tilda v předchozí větě odkazuje na domovský adresář ve vašem počítači. Přidejte následující řádek do ~ / .bash_profile : source /usr/local/etc/bash_completion.d/git-completion.bash a uložte. Posledním krokem je opětovné načtení profilu bash. Toho můžete dosáhnout spuštěním source ~ / .bash_profile v aktuální relaci bash.

Odpověď

Nainstalovat oh-my-zsh a nastavit zsh jako výchozí shell a později mi poděkovat 🙂

Komentáře

  • Udělal jsem to, právě v naději, že nebudu mít vypořádat se s tím – stále žádné návrhy větví po stisknutí záložky
  • Ve skutečnosti nepotřebujete oh-my-zsh , nebo dokonce jakýkoli samostatný systém pluginů! Dokončení Git vychází z krabice, stačí jej povolit.

Odpověď

Vyzkoušeli jsme to a to funguje dobře pro pobočky, ale když uděláte git st + tab, zobrazí se chyba takto

neznámá možnost: –list-cmds = list-mainporcelain, ostatní, nohelpers, alias, seznam-kompletní, použití konfigurace: git [–version] [–help] [-C] [-c =] [–exec-cesta [=]] [–html-cesta] [–man-cesta] [–info-cesta] [-p | –paginate | –no-pager] [–no-replace-objects] [–bare] [–git-dir =] [–work-tree =] [–namespace =] []

Hledali jsme na internetu a zjistili jsme, že --list-cmds v .git-completion.bash byl v nejnovější verzi git a na mém mac byla verze git 2.17.2

Zde jsou řešení

Řešení 1

  1. Zkontrolujte verzi git pomocí git --version příkazu
  2. Poté vložte do adresy URL stejné číslo verze jako já

    curl https://raw.githubusercontent.com/git/git/v2.17.2/contrib/completion/git-completion.bash -o ~/.git-completion.bash 
  3. Poté postupujte podle stejných kroků jako v hlavní odpovědi, vložte následující kód do ~/.bash_profile

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

Řešení 2

Měli byste zkusit aktualizovat verzi git na nejnovější, pak by to mělo fungovat.

Odpověď

Většina uživatelů bude mít git nainstalován jako součást příkazového řádku xcode tools at /usr/bin/git and bash completio n pravidla pro git budou k dispozici na /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash.

V tomto případě není nutné instalovat git z Homebrew ani pravidla pro dokončení git ze stránky raw.githubusercontent.com. Stačí vytvořit symbolický odkaz takto:

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

Poznámka: ujistěte se, že jste nainstalovali a nakonfigurovali balíček bash-completion z Homebrew.

Odpověď

Pro macOS Catalina + v zsh:

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

Poté aktualizujte svůj ~/.zshrc pomocí:

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

Odpověď

Vyhledejte soubor .bashrc.

Otevřete jej a přidejte tento řádek dole:

source /etc/bash_completion.d/git

Komentáře

  • Ne ‚ nemáte nic /etc/bash_completion.d/ na relativně novém systému (OSX 10.10.3).
  • Zkuste vytvořit to.
  • Ne bash_completion, git_completion, který dělá různé věci.
  • @MichaelDurrant Funguje to. Věř mi.;) prowrestlingtees.com / media / catalog / product / cache / 1 / image / …
  • @crmpicco Mohl byste prosím poskytnout pokyny pro vytvoření /etc/bash_completion.d/git? Díky tomu by byla vaše odpověď cennější.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *