Na moim komputerze z systemem Linux mam autouzupełnianie dla oddziałów za pomocą Git.
[Uwaga: mówimy o zakończeniu gałęzi git, a nie o zakończeniu bash (np. Polecenia, pliki itp.). Tak więc wcale NIE Lane odpowiedź ]
Na przykład mogę wpisać git checkout
+ TABi uzyskać listę oddziałów.
Lub mogę wpisać git checkout feb*
+, TABaby uzyskać wszystkie gałęzie zaczynające się od „feb”.
Jak mogę uzyskać tę funkcjonalność na komputerze Mac?
Próbowałem pobieranie i uruchamianie bash-completion/bash_completion
i bash-completion/bash_completion.sh.in
ale nie radość. Pierwszy podał komunikaty o błędach declare: -A invalid_option
. Drugi nie dał żadnych błędów. Kiedy ja git checkout
+ TABmimo to wciąż otrzymuję listę plików w katalogu, a nie gałęzie. Jestem w katalogu głównym projektu.
Automatyczne uzupełnianie dla katalogów i poleceń bash działa poprawnie, więc jest specyficzne dla Git.
źródło
Models
folderze, kiedy nacisnąłem,m
Tab
aby autouzupełnianie byłomaster
.source ~/.bash_profile
po wklejeniu kodu. Ponowne uruchomienie terminala również spowoduje to samo.git
ale domyślnie Applegit
)brew install git
i uruchom ponownie 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>]
Niektóre osoby 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 uważam, że Homebrew to najlepszy menedżer pakietów dla Mac OS (niektórzy twierdzą, że jest to de facto menedżer pakietów Mac OS).
Po zainstalowaniu Homebrew możesz po prostu zainstalować git wraz z ukończeniem bash z
brew install git bash-completion
.Następnie musisz umieścić w swoim
~/.bash_profile
:(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 parzenia)
Więcej informacji na temat instalowania git i bash-zakończeniu z brew znajdziesz tutaj.
źródło
git
i dodawaniebash-completion
nie jest wcale tym samym, co dodawanie..git-completion.bash
Są to różne programy i robią całkiem różne rzeczy - jeden wykonuje automatyczne uzupełnianie poleceń bash, a drugi automatyczne uzupełnianie poleceń git i 'nair the twain się spotkają;)~/.bash_profile
?Uruchom to na terminalu:
Następnie zrób to:
Dodaj te linie:
To wszystko. To zadziałało dla mnie.
źródło
~/.bash_profile
plik nie istnieje. W porządku, po prostu utwórz plik, umieśćif
tam skrypt i zapisz. Załaduj ponownie swoją skorupę i będzie działać.git
igit-completion.bash
już są dostarczane z narzędziami wiersza poleceń macOS (xcode-select --install
). Aby włączyć autouzupełnianie bash, dodaj to do swojego~/.bash_profile
.Umożliwi to również autouzupełnianie dla gałęzi git.
źródło
Oto, co dezorientuje niektórych z was: masz zainstalowany browar lub porty, ale używasz systemowego git
/usr/bin/
. Aby to sprawdzić:Jeśli widzisz,
/usr/bin/git
to albo napar nie jest poprawnie skonfigurowany, albo nie zainstalowałeś git przez napar.Jeśli zainstalujesz git przez brew, włączenie uzupełniania bash dla parzenia spowoduje również włączenie bash dla git. Wynika to z faktu, że
/usr/local/etc/bash_completion
tak naprawdę wszystko pobiera/usr/local/bash_completion.d
, a pakiet brew dla git instaluje tam skrypt zakończenia git.źródło
Możesz zainstalować bash i git z MacPorts z włączoną opcją „bash_completion”. Jest to prawdopodobnie najłatwiejszy sposób utrzymywania aktualności zarówno git, 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
Aby znaleźć ustawienia zakończenia w systemie Linux, zajrzyj do /etc/bash_completion.d/git (jest to długi plik). Skopiowanie tego prawdopodobnie nie zadziała, ponieważ zostało zaprojektowane w taki sposób, aby pochodziło ze środowiska uzupełniania poprzez / etc / bash_completion (który pochodzi z /etc/profile.d/bash_completion.sh; pliki w / etc / profile .d pochodzą z / etc / profile).
źródło
Jeśli ukończenie git jest częściowo zepsute, nawet po sourcingu
https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
, może być konieczna aktualizacja wersji git.Na przykład, gdy wpisałem
git check
+TAB
, poprawnie wypełniłby się automatyczniegit checkout
. Ale kiedy wpisałemgit checkout
+TAB
, nie wyświetlała się tylko lista gałęziHEAD
.Rozwiązaniem dla mnie była aktualizacja mojej
git
wersji. Miałem wersję 2.7.0, która najwyraźniej nie była kompatybilna z najnowszą wersjągit-completion.bash
. Uruchomiłembrew upgrade git
, który zaktualizował go do wersji 2.13.0, a teraz poprawnie uzupełnia nazwy moich oddziałów.źródło
brew upgrade git
ibrew link git
(z włączoną funkcją zastępowania)update
naupgrade
.Jak dotąd najlepsze referencje, które udało mi się rozwiązać, aby rozwiązać ten problem, znajdują się w SpinDance autorstwa Connora Livingstona :
źródło
Wypróbowałem to i działa dobrze dla gałęzi, ale kiedy zrobisz
git st
+,tab
to pokazuje taki błądPrzeszukałem internet i okazało się, że
--list-cmds
w.git-completion.bash
było w najnowszej wersji git i na moim mac wersja git było2.17.2
Oto rozwiązania
Rozwiązanie 1
git --version
poleceniaNastępnie podaj ten sam numer wersji w adresie URL, co ja
Następnie wykonaj te same kroki, co w górnej odpowiedzi, wprowadź poniższy kod
~/.bash_profile
Rozwiązanie 2
Powinieneś spróbować zaktualizować wersję git do najnowszej, to powinna działać.
źródło
Zainstaluj oh-my-zsh i ustaw zsh jako domyślną powłokę i dziękuję później :)
źródło
Większość użytkowników
git
zainstaluje się jako część narzędzi wiersza poleceń xcode w,/usr/bin/git
a reguły wypełniania bash dla git będą dostępne na/Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
.W takim przypadku nie trzeba instalować git z Homebrew ani źródłowych reguł uzupełniania git z raw.githubusercontent.com. Wystarczy utworzyć dowiązanie symboliczne w następujący sposób:
Uwaga: upewnij się, że zainstalowałeś i skonfigurowałeś
bash-completion
pakiet z Homebrew.źródło
Znajdź swój
.bashrc
plik.Otwórz i dodaj ten wiersz na dole:
source /etc/bash_completion.d/git
źródło
/etc/bash_completion.d/
folderu na stosunkowo nowym systemie (OSX 10.10.3)./etc/bash_completion.d/git
? Dzięki temu twoja odpowiedź będzie bardziej cenna.