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 na m Tab, aby automatycznie uzupełnił do master.
  • 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ślnie git) brew install git i zrestartuj terminal dla tych, którzy napotykają dziwny błąd, taki jak 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>]

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 dodanie bash-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 polecenia source ~/.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 skrypt if 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 i brew link git (z włączoną funkcją zastępowania)
  • Dzięki za złapanie @Tope. Zmieniłem update na upgrade.

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

  1. Sprawdź wersję gita za pomocą polecenia git --version
  2. 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 
  3. 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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *