Jak skonfigurować uzupełnianie wiersza poleceń git bash?


133

Np. Na świeżej maszynie ubuntu właśnie uruchomiłem sudo apt-get giti nie ma zakończenia podczas wpisywania np git check[tab].

Nie znalazłem nic na http://git-scm.com/docs , ale uzupełnienie IIRC jest obecnie zawarte w pakiecie git i potrzebuję tylko odpowiedniego wpisu w moim bashrc.


Działa dla mnie od razu po wyjęciu z pudełka na Ubuntu Precise (i Fedorze 17).
Ślimak mechaniczny

2
Aby sprawdzić, czy masz go domyślnie, czy nie, możesz uruchomić (cd ~ && exec cat .bashrc | grep completion).
aderchox

Odpowiedzi:


184

W systemie Linux

w większości dystrybucji skrypt uzupełniania git jest instalowany w /etc/bash_completion.d/(lub /usr/share/bash-completion/completions/git) podczas instalacji gita, nie ma potrzeby wchodzenia na github. Wystarczy go użyć - dodaj tę linię do .bashrc:

source /etc/bash_completion.d/git
# or
source /usr/share/bash-completion/completions/git

W niektórych wersjach Ubuntu autouzupełnianie git może być domyślnie uszkodzone, ponowna instalacja za pomocą tego polecenia powinna to naprawić:

sudo apt-get install git-core bash-completion

Na komputerze Mac

Możesz zainstalować uzupełnianie git za pomocą Homebrew lub MacPorts.

Homebrew

if $BASH_VERSION> 4: brew install bash-completion@2(zaktualizowana wersja) Zwróć szczególną uwagę, którą wersję basha posiadasz jako domyślną wersję systemu MacOS z wersją 3.2.57 (1) -release.

dodaj do .bash_profile:

  if [ -f /usr/local/share/bash-completion/bash_completion ]; then
    . /usr/local/share/bash-completion/bash_completion
  fi

W przypadku starszych wersji basha: brew install bash-completion

dodaj do .bash_profile:

[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion

MacPorts

sudo port install git +bash_completion

następnie dodaj to do swojego .bash_profile:

if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
fi

Więcej informacji w tym przewodniku: Instalacja uzupełniania Bash git

Zauważ, że we wszystkich przypadkach musisz utworzyć nową powłokę (otworzyć nową kartę / okno terminala), aby zmiany odniosły skutek.


1
Większość * nix boxów (zwłaszcza Ubuntu) ma już ten plik, więc samo przekazanie go mojemu użytkownikowi rozwiązało mój problem. Dzięki.
nevvermind

5
Ubuntu może mieć to jako /etc/bash_completion.d/git-prompt
Catskul

2
Mam Gita, ale nie /etc/bash_completion.d
sixty4bit

15
W moim Ubuntu 14.04 ten plik to /usr/share/bash-completion/completions/git. /etc/bash_completion.d/git-promptjest używany do obsługi poleceń git, a nie do zakończenia.
Ray Chen

18
UWAGA: Ta metoda homebrew Mac działa tylko jeśli masz zainstalowane poprzez git homebrew zrobić brew uninstall bash-completionwtedy brew install git, gdy trzeba było git zainstalowany przez jakiś inny sposób przed, to powyższe kroki będą działać.
patapouf_ai

66

miałem ten sam problem, wykonałem poniższe kroki:

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

następnie dodaj następujące wiersze do swojego .bash_profile(zazwyczaj w folderze domowym)

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

źródło: http://code-worrier.com/blog/autocomplete-git/


Byłem za proxy, więc musiałem najpierw ustawić proxy, aby curl działał. export https_proxy=proxy_ip:proxy_portNaprawdę nie rozumiem, dlaczego nie pobiera ustawień z systemu.
madlymad

2
tak naprawdę nie trzeba ukrywać tego pliku kropką przed jego nazwą. Również: uważaj na wersje git (zobacz odpowiedź wisbucky)
Walter Tross

42

Większość wyświetlanych instrukcji podpowiada pobranie

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

i źródła tego w swoim skrypcie startowym basha, np .bashrc.

Ale jest z tym problem, ponieważ odwołuje się do mastergałęzi, która jest najnowszą wersją git-completion.bash. Problem polega na tym, że czasami się zepsuje, ponieważ nie jest kompatybilny z zainstalowaną wersją gita.

W rzeczywistości teraz to się zepsuje, ponieważ mastergałąź git-completion.bashma nowe funkcje, które wymagają git v2.18, do którego żaden z menedżerów pakietów i instalatorów nie zaktualizował jeszcze. Pojawi się błądunknown option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config

Dlatego najbezpieczniejszym rozwiązaniem jest odwołanie się do wersji / tagu, który pasuje do zainstalowanego gita. Na przykład:

https://raw.githubusercontent.com/git/git/v2.17.1/contrib/completion/git-completion.bash

Zauważ, że ma v2.17.w adresie URL zamiast master. A potem, oczywiście, upewnij się, że źródło tego znajdujesz w skrypcie startowym bash.


To najlepsza odpowiedź na macOS.
AShelly

Wow ... Po około godzinie rozbijania mojego mózgu o to, twój komentarz był kluczem. Dzięki za to rozwiązanie! Złoty!
Myke Carter

4
Plik specyficzny dla wersji macos powinien już znajdować się na dysku tutaj: /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bashDla pewności porównałem go z wersją 2.17.1 na github i pasuje.
jmt

18

Ubuntu 14.10

Zainstaluj git-coreibash-completion

sudo apt-get install -y git-core bash-completion
  • Do bieżącego wykorzystania sesji

    source /usr/share/bash-completion/completions/git
  • Aby mieć to zawsze włączone we wszystkich sesjach

    echo "source /usr/share/bash-completion/completions/git" >> ~/.bashrc

1
Dziękuję, to zadziałało na Ubuntu 16.04 LTS :)
Mrunal Pagnis


6

Po prostu zrób to w swoim ~/.bashrc :

source /usr/share/bash-completion/completions/git

Inne odpowiedzi mówią, aby zainstalować bash-completion, nie musisz tego robić, ale jeśli to zrobisz, nie ma potrzeby bezpośredniego pobierania zakończenia. Robisz jedno lub drugie, a nie oba.

Bardziej ogólnym rozwiązaniem jest zapytanie o lokalizację systemu zgodnie z zaleceniami projektu bash-complete:

source "$(pkg-config --variable=completionsdir bash-completion)"/git

1
Twoje ogólne rozwiązanie działało idealnie dla mnie na Ubuntu 18.04. Na koniec, Twoja metoda jest niezwykle zwięzła - dzięki!
Jason R Stevens CFA

4

na moim ubuntu jest tutaj zainstalowany plik:

source /etc/bash_completion.d/git-prompt

możesz skorzystać z łączy do /usr/lib/git-corefolderu. Znajdziesz tam instrukcję, jak skonfigurować PS1 lub jak używać__git_ps1


3

Może być pomocny dla kogoś: -

Po pobraniu .git-Complete.bash z poniższego linku,

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

i próbując użyć funkcji __git_ps1, otrzymywałem błąd, ponieważ -

 -bash: __git_ps1: command not found

Najwyraźniej musimy pobierać skrypty oddzielnie od głównego, aby to polecenie działało, ponieważ __git_ps1 jest zdefiniowane w git-prompt.sh. Podobnie jak w przypadku pobierania .git-Complete.bash, pobierz plik git-prompt.sh:

curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh > ~/.bash_git

a następnie dodaj następujące elementy w swoim .bash_profile

source ~/.bash_git
if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
export PS1='\W$(__git_ps1 "[%s]")>'
fi

source ~ / .bash.git uruchomi pobrany plik i

export PS1='\W$(__git_ps1 "[%s]") polecenie doda nazwę gałęzi checkout out po bieżącym katalogu roboczym (jeśli jest to repozytorium git).

Będzie więc wyglądać tak: -

dir_Name[branch_name] gdzie nazwa_katalogu to nazwa katalogu roboczego, a nazwa_gałęzi to nazwa gałęzi, nad którą aktualnie pracujesz.

Uwaga - w __git_ps1 rozróżniana jest wielkość liter.


1

Arch Linux

Źródło /usr/share/git/completion/git-completion.bashw jednym z plików startowych bash.

Na przykład:

# ~/.bashrc

source /usr/share/git/completion/git-completion.bash

Możesz znaleźć skrypt w innych lokalizacjach, /usr/share/bash-completion/completions/gitale te skrypty nie działają dla mnie.


-1

Ubuntu

Jest piękny odpowiedź tutaj . Pracował dla mnie na Ubuntu 16.04

Windows

Git Bash to narzędzie umożliwiające automatyczne uzupełnianie. Nie jestem pewien, czy jest to część standardowej dystrybucji, więc ten link może być również przydatny. Nawiasem mówiąc, Git Bash pozwala używać poleceń powłoki Linuksa do pracy w systemie Windows, co jest świetną rzeczą dla osób, które mają doświadczenie w środowisku GNU / Linux.


-1

Na Github w projekcie Git udostępniają plik bash do autouzupełniania poleceń git.

Powinieneś pobrać go do katalogu domowego i zmusić bash do jego uruchomienia. To po prostu dwa kroki i doskonale wyjaśnione (krok po kroku) w poniższym poście na blogu.

blog z problemami z kodem: autocomplete-git /

Przetestowałem to na Macu, powinno działać również na innych systemach. Możesz zastosować to samo podejście do innych systemów operacyjnych.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.