Homebrew ' git ' не использует завершение
при использовании git OSX, после изменения файла я могу просто сделать 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 ответов
вы ищете:
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 не делает хотя исполняемый файл на установки.
у меня был тот же вопрос и даже нашел этот пост сегодня утром. Я исправил проблему, обновив brew с brew update
а затем переустановить git с brew reinstall git
.
затем я был уведомлен о другом файле, который блокирует процесс связывания homebrew, в моем случае это было /usr/local/share/zsh/site-functions/git-completion.bash
. Удаление файла и запуск brew link git
решается вопрос. Предполагая, что это была просто плохая версия рецепта, на которую мы наткнулись.
найдено рабочее решение. Это очень недавно (автор 16 часов назад и совершил 2 часа назад), и он приходит непосредственно из homebrew.
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-завершение. У меня не был установлен скрипт завершения 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