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


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

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

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

кроме того, после установки 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

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

12 110

12 ответов:

вы ищете:

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.

это завершение git tab get работает на 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

по какой-то причине мне не хватало файла в $(brew --prefix)/etc/bash_completion Итак ,правильный ответ @ Graham Perks не сработал для меня

это закончилось тем, что исправление в моем случае было:

brew unlink bash-completion
brew link bash-completion

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

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

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

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

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

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

найдено рабочее решение. Это очень недавно (автор 16 часов назад и совершил 2 часа назад), и он приходит прямо из доморощенного.

brew install git --without-completions

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

Шаг 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
echo "source ~/git-completion.bash" >> .bashrc

это будет работать как шарм

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

если у вас $BASH_VERSION 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 bash-completion@2
# 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

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

для меня , я должен был поставить

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

на .bashrc (не .файл), чтобы получить эту работу.

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

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

это может иметь какое-то отношение к libedit используется вместо readline в Lion.

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

brew install readline

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

поэтому я добавил его вручную:

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