.git-complete.bash błąd produkcji w systemie macOS Sierra 10.12.6

40

Postępowałem zgodnie z procedurą opisanągit-completion na https://medium.com/@farooqyousuf/autocomplete-git-commands-and-branch-names-in-terminal-on-mac-os-x-4e0beac0388a :

Pierwszym krokiem jest wykonanie tego polecenia w oknie terminala, jest to w zasadzie pobranie skryptu „git-complete.bash” i umieszczenie go w katalogu domowym.

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

Teraz dodaj tę linię do swojego ~ ~ .bash_profile. Umożliwi to wykonanie skryptu autouzupełniania git, jeśli jest obecny

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

Możesz teraz ponownie uruchomić wszystkie okna terminala lub po prostu odświeżyć okno terminala, w którym chcesz użyć tego skryptu. Aby odświeżyć:

source ~/.bash_profile

Oto błąd, który pojawia się podczas tabnaciskania klawisza po wpisaniu git:

unknown 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>]
Rishi Kulshreshtha
źródło
Jakiej wersji git już używasz i jakiej wersji wymaga bash_completion?
user151019
git version 2.17.1
Rishi Kulshreshtha
Tak samo jest na Macu i Ubuntu. wersje git 2.4.7 i 2.17.
wisbucky,

Odpowiedzi:

55

Natrafiłem na dokładnie ten sam problem. Po kilku kopaniach w końcu zorientowałem się, na czym polega problem root.

Zrobili kilka istotnych zmian w git-completion.bashscenariuszu, który wymaga nowej funkcji w git v2.18, --list-cmds. Problem polega na tym, że żaden z menedżerów pakietów nie zaktualizował się jeszcze do wersji git v2.18.

Większość instrukcji mówi o pobraniu raw.githubusercontent.com/git/git/ master/contrib/completion/git-completion.bash. Ale to niekoniecznie najlepsza opcja, ponieważ czasami będziesz pobierał nowszą git-completion.bashwersję niż obsługuje git.

Rozwiązaniem jest więc pobranie git-completion.bashwersji pasującej do twojej wersji git. Następnie zrób to ponownie. W tym przypadku:

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

Zauważ, że odwołuje się v2.17.1zamiast master. Później, gdy instalujesz git v2.18, możesz z powrotem przełączyć się na masterlub v2.18oznaczyć.

wisbucky
źródło
2
Wielkie dzięki !! Szukałem podobnego rozwiązania, ponieważ pamiętam, że git-completion.bashwcześniej działało.
Rishi Kulshreshtha
2
Fan-bloody-tastic
bhu Boue vidya
Rozwiązuje to problem śledzenia wersji - stackoverflow.com/a/18898614/1874627
saurabheights
3

Uaktualnienie gita do najnowszej wersji jest najprostszym rozwiązaniem. https://git-scm.com/download/mac

Następnie upewnij się, że postępujesz zgodnie z instrukcjami

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

  2. Dodaj to małe polecenie do .bash_profilepliku if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi

Kidane
źródło
2

Nie buduj go ze źródła; zamiast tego zainstaluj z MacPorts .

Aby zainstalować git z automatycznym uzupełnianiem, wydaj następujące polecenie:

 $ sudo port install git +bash_completion

zamknij i ponownie otwórz terminal, a zakończenie git powinno działać

Allan
źródło
Próbowałem tego, ale nie rozwiązałem problemu. To wciąż to samo.
Rishi Kulshreshtha
Wydaj to polecenie: sudo find / -type -name "git-completion.bash"i opublikuj wyniki na swoje pytanie.
Allan
1

Powinieneś zweryfikować swoją wersję git i upewnić się, że jest zaktualizowana do co najmniej 1.8.

Miałem starszą wersję 1.7.11, ale to nie działało i otrzymywałem ten sam błąd, który masz.

Mihai
źródło
git version 2.17.1
Rishi Kulshreshtha
0

Jeśli używasz Homebrew, możesz chcieć

  1. uaktualnij git:

    brew upgrade git

  2. źródło zainstalowanego git-complete.bash w ~/.bash_profile:

    . /usr/local/etc/bash_completion.d/git-completion.bash

Dzięki temu zainstalowane wersje git i skryptów ukończenia są zgodne.

Alexander Presber
źródło