Na moim komputerze z Linuksem mam autouzupełnianie dla gałęzi z Git.
[Uwaga, o której mówimy uzupełnianie gałęzi git, nie uzupełnianie bash (np. polecenia, pliki itp.). Tak więc NIE Lane „w ogóle nie odpowiada ]
Na przykład mogę wpisać git checkout
+ TAB i wyświetlę listę oddziałów.
Albo mogę wpisać git checkout feb*
+ TAB , aby uzyskać wszystkie gałęzie zaczynające się od „feb”.
Jak mogę uzyskać tę funkcjonalność na Macu?
Próbowałem pobrać i uruchomić bash-completion/bash_completion
i bash-completion/bash_completion.sh.in
ale bez radości. Pierwsza dała komunikaty o błędach na temat declare: -A invalid_option
. Druga nie dała żadnych błędów. Kiedy git checkout
+ TAB chociaż wciąż otrzymuję listę plików w katalogu, a nie gałęzi. Jestem w katalogu głównym projektu.
Autouzupełnianie dla katalogów i polecenia bash działają poprawnie, więc jest specyficzne dla Gita.
Komentarze
- Właśnie dołączyłem do tej społeczności, więc mogę ' jeszcze odpowiedzieć, ale znalazłem ” oh-my-zsh ” super pomocny i bardzo podoba mi się interfejs użytkownika: github.com/ohmyzsh/ohmyzsh Dotyczy to oczywiście osób używających zsh. I ' m zakładam, że to nie ' nie działa dla basha …
Odpowiedz
ok, więc potrzebowałem skryptu autouzupełniania git .
Mam to z tego adresu URL:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
Nie musisz się martwić o to, w którym katalogu się znajdujesz, jeśli uruchomisz to jako katalog domowy (~
) jest używany z celem.
Następnie dodałem do mojego pliku ~/.bash_profile
następujący kod„ wykonaj, jeśli istnieje ”:
if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi
Aktualizacja: „Robię te fragmenty kodu bardziej zwięzłym, aby zmniejszyć mój plik .bashrc
, w tym przypadku Teraz używam:
test -f ~/.git-completion.bash && . $_
Uwaga: $_
oznacza ostatni argument poprzedniego polecenia. więc . $_
oznacza uruchomienie – w tym przypadku „it” to .git-completion.bash
To nadal działa zarówno na Ubuntu, jak i OSX i na komputerach bez skryptu .git-completion.bash
skryptu.
Teraz git
Tab ( w rzeczywistości to „s git
Tab Tab ) działa jak urok!
ps: Jeśli to nie działa „Nie pracuj od razu, być może będziesz musiał uruchomić chmod u+x ~/.git-completion.bash
, aby przyznać sobie niezbędne uprawnienia:
-
chmod
to polecenie, które modyfikuje uprawnienia do plików -
u
oznacza użytkownika będącego właścicielem pliku, domyślnie jego twórcę, czyli ciebie -
+
oznacza ustawianie / aktywowanie / dodawanie uprawnień -
x
oznacza uprawnienie do wykonywania, czyli możliwość uruchomienia skrypt
Komentarze
- Tak, ponowne uruchomienie terminala po dodaniu skryptu bash sprawiło, że zadziałało. Siedziałem tutaj i zastanawiałem się, dlaczego ciągle próbuje się autouzupełnianie do mojego folderu
Models
, kiedy trafiłem nam
Tab
, aby automatycznie uzupełnił domaster
. - Zobacz także unix.stackexchange.com/q/ 48862/10043 dla innej wskazówki
- Jeśli zaakceptowana odpowiedź nie ' nie działa dla nikogo, spróbuj tego:
source ~/.bash_profile
po wklejeniu kodu. Ponowne uruchomienie terminala również spowoduje to samo. - Dziękuję! Próbowałem innych rzeczy, ale nic nie działało (w tym github.com/bobthecow/git-flow-completion/wiki/… ). Twoje rozwiązanie działało jak marzenie;)
- (nie ' nie masz warzenia
git
, ale Apple domyślniegit
)brew install git
i zrestartuj terminal dla tych, którzy napotykają dziwny błąd, taki jakgit 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>]
Odpowiedź
Niektórzy wolą używać menedżera pakietów do automatyzacji instalacji, aktualizacji i konfiguracji pakietów Mac OS. Jestem fanem menedżerów pakietów i myślę, że Homebrew jest najlepszym menedżerem pakietów dla Mac OS (niektórzy powiedzieliby, że to de facto menedżer pakietów Mac OS).
Po zainstalowaniu Homebrew, możesz po prostu zainstalować git wraz z bash-complete z brew install git bash-completion
.
Następnie musisz umieścić w swoim ~/.bash_profile
:
if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then . `brew --prefix`/etc/bash_completion.d/git-completion.bash fi
(Uwaga: jeśli ta instalacja zakończy się niepowodzeniem z błędem 404, a masz już zainstalowany git, po prostu usuń część git tej instalacji brew)
Więcej informacji o instalowaniu git i bash-Complete with brew tutaj.
Komentarze
- Dodawanie
git
i dodaniebash-completion
to nie to samo, co dodanie.git-completion.bash
To są różne programy i robią zupełnie inne rzeczy – jedno wykonuje polecenie bash autouzupełnianie, a druga robi autouzupełnianie komend git i ' nair te dwie osoby się spotkają;) - działa jak urok, wielkie dzięki. Czy mógłbyś wyjaśnić, co to jest użycie skryptu, który masz dodany w
~/.bash_profile
? - Pomimo tego, co inni powiedzieli o tej odpowiedzi, to właśnie on sprawił, że autouzupełnianie git działa i n.
- Zauważ, że wiersze do dodania do
~/.bash_profile
zostały określone dla mnie w danych wyjściowych homebrew. Użyłem ich zamiast powyższych linii. Następnie musisz ponownie załadować profil bash w każdym oknie terminala, w którym chcesz używać autouzupełniania, używając poleceniasource ~/.bash_profile
Odpowiedz
Uruchom to na terminalu:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
Następnie zrób to:
vi ~/.bash_profile
Dodaj te wiersze:
if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi
To wszystko. U mnie to zadziałało.
Komentarze
- (drugi krok) Jeśli ktoś woli otworzyć bash_profile w edytorze tekstu, po prostu zrób to: otwórz -e .bash_profile
- W dziewiczym systemie Mac OS High Sierra plik
~/.bash_profile
nie ' nie istnieje. To ' w porządku, po prostu utwórz plik i umieść w nim skryptif
i zapisz. Załaduj ponownie powłokę po i będzie działać. - To zadziałało ja. Zamiast vi (z którym zawsze się zmagam) po prostu otwórz -e ~ / .bash_profile
- W drugim kroku będziesz potrzebować ten link
Odpowiedź
git
i git-completion.bash
są już dostarczane z narzędziami wiersza poleceń systemu macOS (xcode-select --install
). Aby włączyć autouzupełnianie basha, dodaj to do swojego ~/.bash_profile
.
[ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ] && . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
Spowoduje to również włączenie autouzupełniania dla gałęzi git.
Komentarze
- Na pewno ' mam zainstalowane narzędzia wiersza poleceń, ale ten plik nie ' nie istnieje w moim przypadku. Jednak z przyjemnością idę z naparem (a ponieważ mój dupek też jest z naparem, być może też mądrzejszy).
- Dzięki! IMO, to powinna być odpowiedź z zielonym znacznikiem wyboru.
- To jest najprostsze rozwiązanie i działa dla mnie
- To zadziałało dla mnie – chociaż użyłem nieco innego formatu .
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
- u mnie odpowiedź zadziałała, ale po dodaniu podanej linii do
~/.bash_profile
nie zapomnij również uruchomićsource ~/.bash_profile
(zwłaszcza jeśli utworzysz plik~/.bash_profile
po raz pierwszy)
Odpowiedź
Oto „co” niektórych z was dezorientuje: masz zainstalowane oprogramowanie brew lub porty, ale używasz gita systemowego w /usr/bin/
. Aby to sprawdzić:
which git
Jeśli widzisz /usr/bin/git
, to albo napar nie jest poprawnie skonfigurowany, albo nie zainstalowałem git via brew.
Jeśli zainstalujesz git via brew, włączenie uzupełniania bash dla brew będzie również włączać uzupełnianie bash dla git. Dzieje się tak, ponieważ /usr/local/etc/bash_completion
w rzeczywistości umieszcza wszystko w /usr/local/bash_completion.d
, a pakiet brew dla gita instaluje tam skrypt uzupełniający git.
Komentarze
- To ma sens, ale jak byś ” włączyć uzupełnianie bash dla naparu „? ' nie wiesz, jak to zrobić, to powinno być częścią Twojej odpowiedzi.
- Właśnie to zrobiłem (działa, dziękuję) przez simplified.guide/macos/bash-completion , ale automatyczne uzupełnianie jest opóźnione o kilka sekund … nieparzyste
Odpowiedź
Autouzupełnianie Git na Catalinie i nowszych (przy użyciu Homebrew)
Zmieniono macO z bash do zsh jako domyślna powłoka zaczynająca się od Cataliny.
Będziesz potrzebujesz specjalnych skryptów autouzupełniania dla zsh.
Oto jak zainstalować je z Homebrew:
brew install zsh-completion
Brew „zsh-complete w rzeczywistości obejmuje git-complete.
Aby aktywować autouzupełnianie, musisz dodać mały blok kodu do swojego ~/.zshrc
. Może być konieczne utworzenie tego pliku w folderze użytkownika, jeśli jeszcze nie istnieje. Uwaga: Wynik powyższego skryptu instalacyjnego powie Ci dokładnie, jaki kod dodać, więc przeczytaj go uważnie i skopiuj stamtąd na wypadek, gdyby został zaktualizowany od czasu mojego napisania tutaj.
if type brew &>/dev/null; then FPATH=$(brew --prefix)/share/zsh-completions:$FPATH autoload -Uz compinit compinit fi
Ważne:
Po zakończeniu instalacji odczytuje dane wyjściowe skryptu instalacyjnego.
To poinstruuje Cię nie tylko o dodaniu kodu do .zshrc, ale także udzieli porady na temat dodatkowych działań, które mogą być konieczne, takich jak wymuszenie przebudowy zcompdump. Jednak najprawdopodobniej nie będziesz potrzebować dodatkowych czynności.
Komentarze
- Terminal wyświetla denerwujący komunikat za każdym razem, gdy ' s otwarte:
zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]?
Ale to działa! - Właśnie dołączyłem do tej społeczności, więc mogę ' t jeszcze odpowiadam, ale uważam, że ” oh-my-zsh ” jest bardzo pomocny i bardzo podoba mi się interfejs użytkownika: github.com/ohmyzsh/ohmyzsh Dotyczy to oczywiście osób używających zsh. I ' m zakładam, że to nie ' nie działa dla basha …
Odpowiedz
Możesz zainstalować bash i git z MacPorts z włączoną opcją „bash_completion”. Jest to prawdopodobnie najłatwiejszy sposób na utrzymanie aktualności zarówno gita, jak i uzupełnień.
http://denis.tumblr.com/post/71390665/adding-bash-completion-for-git-on-mac-os-x-snow-leopard
Aby zainstalować MacPorts: http://www.macports.org/install.php/
Dodatkowe informacje
Jeśli chodzi o lokalizowanie ustawień uzupełniania w systemie Linux, zajrzyj do / etc /bash_completion.d/git (jest to długi plik). Jednak skopiowanie tego prawdopodobnie nie zadziała, ponieważ zostało zaprojektowane do pobierania przez platformę uzupełniania za pośrednictwem / etc / bash_completion (który jest pobierany z /etc/profile.d/bash_completion.sh; pliki w / etc / profile .d pochodzą z / etc / profile).
Odpowiedź
Jeśli kompletacja git jest częściowo zepsuta, nawet po pozyskaniu https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
, może być konieczne zaktualizowanie wersji git.
Na przykład, gdy wpisałem git check
+ TAB
, poprawnie uzupełniłby automatycznie git checkout
. Ale kiedy wpisałem git checkout
+ TAB
, nie wyświetlało listy oddziałów, tylko HEAD
.
Rozwiązaniem dla mnie było zaktualizowanie mojego git
. Używałem 2.7.0, która najwyraźniej nie była zgodna z najnowszą wersją git-completion.bash
. Uruchomiłem brew upgrade git
, który zaktualizował go do wersji 2.13.0, a teraz jest prop erly automatycznie uzupełnia nazwy moich oddziałów.
Komentarze
- Pojawił się ten sam problem, ale musiałem uruchomić
brew upgrade git
ibrew link git
(z włączoną funkcją zastępowania) - Dzięki za złapanie @Tope. Zmieniłem
update
naupgrade
.
Odpowiedź
Zdecydowanie najlepszym źródłem informacji, jakie znalazłem w celu rozwiązania tego problemu, jest SpinDance , autor: Connor Livingston :
Jeśli git- Complete.bash nie istnieje na Twoim komputerze, pobierz go z linku, który podałem powyżej (czyli to ) i zapisz go na komputerze lokalnym w nowym pliku o nazwie git-Complete.bash w /usr/local/etc/bash_completion.d/ katalog. Jeśli istnieje skrypt git-complete.bash na twoim komputerze, ale nie ma go w katalogu /usr/local/etc/bash_completion.d/ , powinniśmy utworzyć jego kopię w tym katalogu. Szybkie sudo cp /current/path/to/your/git-completion.bash /usr/local/etc/bash_completion.d/git-completion.bash powinno załatwić sprawę. Dla tych, którzy są ciekawi katalogu /usr/local/etc/bash_completion.d/ : służy on do przechowywania nowych poleceń uzupełniania i może być konieczne utworzenie go, jeśli nie istnieje jeszcze w
W tym momencie skrypt git-Complete.bash powinien istnieć na twoim lokalnym komputerze w katalogu /usr/local/etc/bash_completion.d/ . Teraz podłączymy skrypt uzupełniania git do basha, wskazując go z ~ / .bash_profile .
Uwaga: tylda w poprzednim zdaniu odnosi się do katalogu domowego na twoim komputerze. Dodaj następujący wiersz do ~ / .bash_profile : source /usr/local/etc/bash_completion.d/git-completion.bash i zapisz. Ostatnim krokiem jest ponowne załadowanie profilu bash. Możesz to osiągnąć, uruchamiając source ~ / .bash_profile w bieżącej sesji basha.
Odpowiedź
Zainstaluj oh-my-zsh i ustaw zsh jako domyślną powłokę i podziękuj mi później 🙂
Komentarze
- Zrobiłem to właśnie w nadziei, że nie będę aby sobie z tym poradzić – nadal nie ma sugestii dotyczących gałęzi po naciśnięciu tabulatora
- Tak naprawdę nie potrzebujesz oh-my-zsh ani nawet żadnego oddzielnego systemu wtyczek! Uzupełnianie Git pojawia się po wyjęciu z pudełka, wystarczy je włączyć.
Odpowiedź
Próbowałem i to działa dobrze w przypadku oddziałów, ale kiedy wykonasz git st
+ tab
, to wyświetli się taki błąd
nieznana opcja: –list-cmds = list-mainporcelain, others, nohelpers, alias, list-complete, użycie konfiguracji: git [–version] [–help] [-C] [-c =] [–exec-path [=]] [–html-path] [–man-path] [–info-path] [-p | –paginate | –no-pager] [–no-replace-objects] [–bare] [–git-dir =] [–work-tree =] [–namespace =] []
Przeszukałem internet i okazało się, że --list-cmds
w .git-completion.bash
jest w najnowszej wersji git, a na moim Macu wersja git to 2.17.2
Oto rozwiązania
Rozwiązanie 1
- Sprawdź wersję gita za pomocą polecenia
git --version
-
Następnie umieść ten sam numer wersji w adresie URL co ja.
curl https://raw.githubusercontent.com/git/git/v2.17.2/contrib/completion/git-completion.bash -o ~/.git-completion.bash
-
Następnie wykonaj te same czynności, co w pierwszej odpowiedzi, umieść poniższy kod w
~/.bash_profile
if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi
Rozwiązanie 2
Powinieneś spróbować zaktualizować wersję git do najnowszej, wtedy powinna działać.
Odpowiedź
Większość użytkowników będzie miała git
zainstalowane jako część wiersza poleceń xcode narzędzia pod adresem /usr/bin/git
i zakończono bash Reguły n dla git będą dostępne pod adresem /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
.
W tym przypadku nie ma potrzeby instalowania gita z Homebrew lub reguł uzupełniania kodu źródłowego z raw.githubusercontent.com. Po prostu utwórz łącze symboliczne w następujący sposób:
cd /usr/local/etc/bash_completion.d/ ln -s /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash git
Uwaga: upewnij się, że masz zainstalowany i skonfigurowany pakiet bash-completion
z Homebrew.
Odpowiedź
W przypadku macOS Catalina + w zsh
:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh -o ~/.git-completion.zsh
Następnie zaktualizuj ~/.zshrc
, dodając:
if [ -f ~/.git-completion.zsh ]; then . ~/.git-completion.zsh fi
Odpowiedź
Zlokalizuj swój plik .bashrc
.
Otwórz go i dodaj wiersz na dole:
source /etc/bash_completion.d/git
Komentarze
- Nie ' nie mam nic w folderze
/etc/bash_completion.d/
w stosunkowo nowym systemie (OSX 10.10.3). - Spróbuj utworzyć it.
- Nie bash_completion, git_completion, który robi różne rzeczy.
- @MichaelDurrant To działa. Zaufaj mi.;) prowrestlingtees.com / media / catalog / product / cache / 1 / image / …
- @crmpicco Czy możesz podać instrukcje dotyczące tworzenia
/etc/bash_completion.d/git
? Dzięki temu twoja odpowiedź będzie bardziej wartościowa.