Homebrews `git` не использует завершение

При использовании OSXs git после изменения файла я могу просто сделать git commit <tab>, и thisll автоматически завершит имя файла в том, что было изменено. Однако, если я устанавливаю более новую версию git из homebrew, и я ее использую, эта функция больше не работает (это означает, что я нажимаю <tab>, и она просто "спрашивает", какой файл я хочу сделать, даже включая которые не имеют никаких изменений).

Может кто-нибудь пролить свет на вопрос, почему и как это решить? Id предпочитает использовать homebrews git, так как он более современный.

Моя оболочка zsh, и ни установка bash-completion, ни zsh-completions не работали (даже после последующих инструкций по установке после родов).

Кроме того, после установки git с homebrew он говорит

Bash completion has been installed to: /usr/local/etc/bash_completion.d
zsh completion has been installed to: /usr/local/share/zsh/site-functions

Так не должен ли я использовать один из них?

Ответ 1

Ты ищешь:

brew install git bash-completion

Как гласит комментарий Warpc, вам нужно добавить следующее в ваш ~/.bash_profile чтобы заставить работать bash-завершение homebrew:

if [ -f $(brew --prefix)/etc/bash_completion ]; then
    . $(brew --prefix)/etc/bash_completion
fi

Вышеупомянутое упоминается в предостережениях при установке формулы завершения bash.


Примечание: если вы используете Bash v4 или более поздней версии (через brew install bash), то вы захотите использовать brew install [email protected], чтобы включить завершение вкладки, добавьте следующее в ~/.bash_profile как описано в инструкциях:

export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"

Дополнительный экспорт необходим для git, docker, youtube-dl и других дополнений, которые могут быть включены в $(brew --prefix)/etc/bash_completion.d/.

Ответ 2

Это завершение вкладки git, работающее на OSX без перезагрузки терминала:

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash && echo "source ~/.git-completion.bash" >> ~/.bash_profile && source ~/.bash_profile

Ответ 3

по какой-то причине мне не хватало файла в $(brew --prefix)/etc/bash_completion, поэтому правильный ответ Gramham Perks не работал у меня

В конечном итоге это было исправление:

brew unlink bash-completion
brew link bash-completion

Ответ 4

Если кто-то другой совершит мою тупую ошибку, попробуйте brew install git. Я использовал git, который поставляется с Xcode и не понимал, что я никогда не устанавливал Homebrew git для получения автозаполнения.

Ответ 5

Я решил проблему, выяснив, что $(brew --prefix)/etc/bash_completion возвращен Permission denied при выполнении. Итак, после простого:

chmod +x $(brew --prefix)/etc/bash_completion

Теперь все работает нормально. Мне интересно, почему Homebrew не делает исполняемый файл bash_completion исполняемого файла при установке.

Ответ 6

У меня была такая же проблема, и я даже нашел это сообщение сегодня утром. Я исправил проблему, обновив brew с помощью brew update, а затем переустановив git с помощью brew reinstall git.

Затем меня уведомили о другом файле, который блокирует процесс связывания homebrew, в моем случае это было /usr/local/share/zsh/site-functions/git-completion.bash. Удаление файла и запуск brew link git решили проблему. Угадав, что это была просто неудачная версия рецепта, на которую мы наткнулись.

Ответ 7

Нашел рабочее решение. Это очень недавно (автор 16 часов назад и совершено 2 часа назад), и он приходит непосредственно из homebrew.

brew install git --without-completions

Просто попробовал, и он, наконец, работает по назначению.

Ответ 8

Шаг 1. Загрузите скрипт автоматического завершения:

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

Шаг 2. Обновите .bash_profile и .bashrc

echo "source ~/git-completion.bash" >> .bash_profile

Через https://www.anintegratedworld.com/git-tab-autocomplete-on-osx-10-11-el-capitan/

Если выше не работает, попробуйте https://github.com/bobthecow/git-flow-completion/wiki/Install-Bash-git-completion

Ответ 9

Если у вас $BASH_VERSION <4.1, например, 3.2.57(1)-release тогда продолжайте:

brew install bash-completion
# In ~/.bash_profile :
if [ -f $(brew --prefix)/etc/bash_completion ]; then
    . $(brew --prefix)/etc/bash_completion
fi

Однако если вы brew install bash для получения версии 4.4.12(1)-release вы можете использовать лучшие и более полные дополнения в:

brew install [email protected]
# In ~/.bash_profile:
[ -f "$(brew --prefix)/share/bash-completion/bash_completion" ] \
&& . "$(brew --prefix)/share/bash-completion/bash_completion"

Обратите внимание, что некоторые пакеты (brew, docker, tmux) по-прежнему помещают некоторые дополнения в $(brew --prefix)/etc/bash_completion.d/ поэтому вы можете добавить:

for completion in "$(brew --prefix)/etc/bash_completion.d/"*
do
    . $completion
done

Наконец, вы должны иметь возможность добавить скрипт завершения git, если по какой-то причине способ, которым вы установили git, не добавил его ни к одному из них:

[[ -f $(brew --prefix)/etc/bash_completion.d/git \
|| -f $(brew --prefix)/share/bash-completion/completions/git ]] \
|| curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash \
    -o $(brew --prefix)/etc/bash_completion.d/git

Вы можете получить и добавить его выше.

Ответ 10

Для меня мне пришлось поставить

source $(brew --prefix)/etc/bash_completion

в .bashrc (not.bash_profile), чтобы заставить это работать.

". bash_profile выполняется для оболочек входа, а .bashrc выполняется для интерактивных недействительных оболочек "- от В чем разница между .bash_profile и .bashrc? Мне кажется, что MacOS Sierra не выполняет .bash_profile при открытии нового окна терминала, только .bashrc.

Я бы не поместил его в _bash_profile, потому что тогда мне придется перезагружать/выйти из системы, чтобы обновления вступили в силу.

Ответ 11

Это работало для меня в Мохаве (OSX 10.14.1):

brew install bash-completion

Затем добавьте следующую строку в ваш ~/.bash_profile:

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

Ответ 12

В 2019 году, используя Bash v5, вам не нужно явно указывать скрипт завершения git bash в .bash_profile или .bashrc

  1. Убедитесь, что в .bashrc есть следующие две строки
export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"
  1. Загрузите скрипт завершения git bash (https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash) и сохраните его в /usr/local/etc/bash_completion.d/ как git

Это! Bash автоматически подберет файл завершения git и включит его.


Примечание: я рекомендую поместить все эти изменения в .bashrc, так как это гарантирует, что при переходе в интерактивную оболочку (т.е. из pipenv shell), завершения будут загружаться правильно, поскольку bash будет источником .bashrc, а НЕ .bash_profile ,

Ответ 13

Возможно, это связано с использованием libedit вместо readline в Lion.

Попробуйте установить readline перед git.

brew install readline

Ответ 14

Для тех, у кого уже установлено brew bash -completion. У меня не было установленного git завершения script и не удалось найти для него никакого нажатия.

Итак, я добавил его вручную:

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o $(brew --prefix)/etc/bash_completion.d/git

Обратите внимание, что вам нужно переименовать файл и удалить расширение для его работы.

Если у вас нет завершения или git установлено, установите его в принятом ответе.

brew install git bash-completion

Ответ 15

Я знаю, что это старый пост, но вам не нужно устанавливать какие-либо дополнительные пакеты.

Homebrew сообщает вам, что есть каталог со всем необходимым.

Вы можете просто добавить следующую строку в ваш .bash_profile если вы используете Bash:

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

Ответ 16

Просто как обновление. Если вы установили "Apple" git (то есть через Xcode), в нем отсутствует необходимый файл git-complete.bash, поэтому вам нужно установить полный git. Вы можете сделать это легко с помощью homebrew - brew install git сделает эту работу. Теперь источник ~/.bash_profile и он должен работать нормально.

Ответ 17

Если вы использовали homebrew для установки git, то, вероятно, нет необходимости устанавливать что-либо для поддержки завершения git. Файл "git-creation.bash" находится где-то (мой был здесь: /usr/local/git/contrib/completion/git-completion.bash)

Все, что вам нужно сделать, это найти файл: sudo find / -type f -name "git-creation.bash"

Затем укажите его путь в вашем .bash_profile. Например, мне нужно было добавить эту строку в мой ~/.bash_profile:

source /usr/local/git/contrib/completion/git-completion.bash

Не забудьте указать исходный файл ~/.bash_profile или заново открыть терминал;)

от: how-enable-git-tab-complete-bash-mac-os-x

Ответ 18

Включить автозаполнение команд GIT в MAC-OS Mojave 10.14 Я разработчик и все время использую GIT из командной строки. Когда я рассматривал перспективы развития, я использовал много команд, используя командную строку для операций GIT. Большую часть времени очень раздражает, что MAC OS не имеет автоматической поддержки завершения команды, которую я частично поддерживаю. а также подсказки команд, что означает, какие команды доступны для набираемых символов. Таким образом, очень сложно набрать очень длинную команду и в основном повторяющуюся задачу, поскольку опечатка идет не так, как надо. :(

Завершение вкладки, безусловно, будет быстрее и проще. К сожалению, установка git по умолчанию на некоторых компьютерах Mac не включает завершение табуляции.

Так что я искал решение для этой проблемы, и в веб-поиске было найдено несколько решений, таких как StackOverflow, GitHub, а также из среды. К сожалению, эти решения не спомогли мне и были разочарованы тем, что пробовали разные решения много раз.

Я глубоко искал и пробовал разные решения, и, к счастью, это легко исправить. Ниже приведены шаги, которые я собрал из нескольких постов, и, наконец, все заработало, как и ожидалось. Поэтому я надеюсь поделиться с другими, кто имеет эту проблему, как я.

Если вы зайдете в веб-поиск и найдете множество решений, в которых упоминается bash файл git complete. Даже руководство по GitHub. Но я предлагаю вам сначала проверить, находится ли файл git-complete.bash на вашем компьютере MAC с git-core или что-то еще, что пришло из установки. Вы можете использовать приведенную ниже команду.

sudo find / -type f -name "git-completion.bash"

Вы получите ниже результаты. (может иметь некоторую разницу в зависимости от содержания)

/Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
/Users/Dilanka/git-completion.bash
/Users/Dilanka/.oh-my-zsh/plugins/gitfast/git-completion.bash
/Users/Dilanka/Downloads/git-completion.bash

Я предлагаю вам выбрать, какой из установленных git-core

Если на вашем компьютере не существует сценария git-complete.bash, пожалуйста, найдите его из приведенного ниже списка и сохраните его на локальном компьютере в новом файле с именем git-complete.bash в /usr/local/etc/bash_completion.d/каталог.

https://git-scm.com/book/en/v1/Git-Basics-Tips-and-Tricks

Если вы используете оболочку Bash, Git поставляется с хорошим сценарием автозаполнения, который вы можете включить. Загрузите его прямо из исходного кода Git по адресу

https://github.com/git/git/blob/master/contrib/completion/git-completion.bash

Если сценарий git-creation.bash существует на вашем компьютере, но отсутствует в каталоге /usr/local/etc/bash_completion.d/, вы должны создать этот каталог и скопировать в него файл. Ниже команда сделает работу:

sudo mkdir /opt/local/etc/bash_completion.d
sudo cp /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash /usr/local/etc/bash_completion.d/git-completion.bash

После завершения выше. Сценарий git-complete.bash должен существовать на вашем локальном компьютере в каталоге /usr/local/etc/bash_completion.d/.

Теперь вам нужно обновить свой профиль, используя команду ниже. Он загрузит ваш добавленный файл bash в контекст терминала.

source ~/.bash_profile

Большой!!! ты сделал это Просто запустите окно терминала и попробуйте. Просто наберите "git sta", он покажет предложения, как показано ниже:

git sta
stage    stash    status
git chec<TAB> will show git checkout

см. мой пост GitHub здесь:

https://github.com/DIL8654/Enable-Auto-Completion-of-GIT-commads-on-MAC-OS-Mojave

Смотрите мой средний пост здесь:

https://medium.com/@dilanka85/enable-auto-completion-of-git-commands-on-mac-os-mojave-10-14