.git-fill.bash видає помилку на macOS Sierra 10.12.6


40

Я дотримувався процедури git-completionвідповідно до опису, поданого на https://medium.com/@farooqyousuf/autocomplete-git-commands-and-branch-names-in-terminal-on-mac-os-x-4e0beac0388a :

Перший крок - виконати цю команду у вікні терміналу, це в основному захоплення сценарію 'git-fill.bash' та розміщення його у вашому домашньому каталозі.

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

Тепер додайте цей рядок до свого "~ / .bash_profile". Це дозволить виконати сценарій автозаповнення git, якщо він присутній

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

Тепер ви можете перезапустити всі вікна терміналу або просто оновити вікно терміналу, в якому ви хочете використовувати цей скрипт. Щоб оновити, виконайте такі дії:

source ~/.bash_profile

Далі йде помилка, яку я отримую під час натискання tabклавіші після введення 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>]

Яку версію git використовують, а яку версію вимагає bash_completion?
користувач151019

git version 2.17.1
Ріші Кульшрешта

Я отримую те саме на Mac та Ubuntu. версії git 2.4.7 та 2.17.
wisbucky

Відповіді:


55

Я зіткнувся з точно такою ж проблемою. Після деякого копання я нарешті з’ясував, у чому полягає коренева проблема.

Вони внесли деякі істотні зміни в git-completion.bashсценарій , який вимагає нової функції в мерзотникові v2.18, --list-cmds. Проблема полягає в тому, що ще ніхто з менеджерів пакетів ще не оновив до git v2.18.

Більшість інструкцій там говорить про завантаження raw.githubusercontent.com/git/git/ master/contrib/completion/git-completion.bash. Але це не обов'язково найкращий варіант, тому що іноді ви завантажуєте новішу, git-completion.bashніж ваша версія git підтримки.

Тож рішення - завантажити git-completion.bashверсію, яка відповідає вашій версії git. Потім знову джерело. В цьому випадку:

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

Зауважте, що це посилання v2.17.1замість master. Пізніше, коли ви встановлюєте GIT v2.18, то ви можете переключитися назад master, або v2.18тега.


2
Дякую тони !! Я шукав подібне рішення, як пам'ятаю, git-completion.bashраніше працював.
Ріші Кульшрешта

2
Вентилятор-криваво-
смачний

Це вирішує проблему відстеження версій - stackoverflow.com/a/18898614/1874627
saurabheights

3

Оновлення git до останньої версії є найпростішим рішенням. https://git-scm.com/download/mac

Після цього обов’язково виконайте дії

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

  2. Додайте цю маленьку команду у .bash_profileфайл if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi


2

Не будуйте його з джерела; замість цього встановити з MacPorts .

Щоб встановити git з автоматичним завершенням, видайте таку команду:

 $ sudo port install git +bash_completion

закрийте та знову відкрийте свій термінал, і завершення роботи git має працювати


Я спробував це, але проблему не вирішив. Це все одно.
Ріші Кульшрешта

Випустіть цю команду: sudo find / -type -name "git-completion.bash"і опублікуйте результати свого запитання.
Аллан

1

Ви повинні перевірити свою версію git і переконатися, що вона оновлена ​​щонайменше до 1,8.

У мене була старіша версія 1.7.11, але вона не спрацювала, і ви отримали ту саму помилку, що і у вас.


git version 2.17.1
Ріші Кулшрешта

0

Якщо ви використовуєте Homebrew, можливо, захочете

  1. оновлення git:

    brew upgrade git

  2. джерело встановленого git-fill.bash у вашому ~/.bash_profile:

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

Це гарантує відповідність встановлених версій скрипту git та завершення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.