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
- Убедитесь, что в
.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"
- Загрузите скрипт завершения 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