.git-creation.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-creation.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?
user151019
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пометить.

wisbucky
источник
2
Благодаря тонну!! Я искал подобное решение, поскольку я помню, что оно git-completion.bashработало ранее.
Риши Кульшрештха
2
Фан-кровавая тэстик
бху Boue видйа
Это решает проблему отслеживания версий - 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-creation.bash в вашем ~/.bash_profile:

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

Это гарантирует, что установленные версии git и сценария завершения совпадают.

Александр Пресбер
источник