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 ответов:
вы ищете:
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