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 nam
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ě jakogit 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říkazusource ~/.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 tamif
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é spustitsource ~/.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 až 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
abrew link git
(se zapnutým přepsáním) - Děkujeme za úlovek @Tope. Změnil jsem
update
naupgrade
.
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
- Zkontrolujte verzi git pomocí
git --version
příkazu -
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
-
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ší.