Как заставить git-extension.bash работать на Mac OS X?

56850
n179911

Я добавил http://blog.bitfluent.com/post/27983389/git-utilities-you-cant-live-without, чтобы добавить git-completion.bashв мой/opt/local/etc/bash_completion.d/git-completion

и я вставил PS1='\h:\W$(__git_ps1 "(%s)") \u\$ 'свой .bashrc_profile

Но теперь я получаю -bash: __git_ps1: command not foundвсе, что я делаю cd.

Подскажите, пожалуйста, что мне не хватает?

88
Смотрите также: https://trac.macports.org/wiki/howto/bash-completion Ioannis Filippidis 6 лет назад 0

14 ответов на вопрос

65
Lara Dougan

Я установил git с помощью MacPorts на мою новую установку Snow Leopard. После установки MacPorts из образа .dmg это будут команды в Terminal.app:

sudo port selfupdate sudo port install git-core +bash_completion 

Если вам также нужна поддержка для извлечения из SVN-репозиториев и документов, используйте это вместо второй строки:

sudo port install git-core +bash_completion +doc +svn 

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

# Завершение команды оболочки MacPorts Bash if [-f / opt / local / etc / bash_completion]; затем, / Опт / местные / и т.д. / bash_completion фи

или для MacPorts начиная с версии 2.1.2 на Mountain Lion:

# Завершение команды оболочки MacPorts Bash if [-f /opt/local/etc/profile.d/bash_completion.sh]; затем, /opt/local/etc/profile.d/bash_completion.sh фи

или для MacPorts с более новыми версиями git:

if [-f /opt/local/share/git-core/git-prompt.sh]; затем, /opt/local/share/git-core/git-prompt.sh фи

Примечание: bash 4.1 или выше требуется для bash_completion.sh. Если завершение не работает, попробуйте echo $BASH_VERSIONвыяснить, в этом ли проблема. Если это так, введите MacPorts bash, набрав bashи попробуйте git complete.

Я просто вставил копию, и я все еще получаю ошибку, которую имеет OP. знак равно Как вы говорите, что было включено? Я не знаю bash_completion NullVoxPopuli 11 лет назад 0
обратите внимание, что в более новых версиях git / macport / bash-complete приглашение находится в другом файле. Смотрите: http://trac.macports.org/ticket/36334 `if [-f /opt/local/share/git-core/git-prompt.sh]; затем . /opt/local/share/git-core/git-prompt.sh fi` Yehosef 11 лет назад 0
Поскольку `/ opt / local / etc / profile.d / bash_completion.sh` требуется` $ BASH_VERSION` 4.1 или выше, мне пришлось сделать следующее на Mac OS X 10.8.3 с MacPorts 2.1.3: переключить Mac OS Оболочка входа в систему X из стандартного `/ bin / bash` (3.2.48 (1) -релиз) в MacPorts` / opt / local / bin / bash` (4.2.42 (2) -релиз), как описано здесь: stackoverflow .com / а / 791244/287984. В основном `` if [`grep / opt / local / bin / bash / etc / shells`]; затем echo / opt / local / bin / bash | chsh -s / opt / local / bin / bash; еще echo / opt / local / bin / bash | sudo tee -a / etc / shells; chsh -s / opt / local / bin / bash; fi`` Uwe Günther 11 лет назад 3
Отлично сработало для меня. Пришлось заменить `/ bin / bash` в Terminal.app на` / opt / local / bin / bash` из macports + все предлагаемые здесь изменения `.bash_profile`. bgs 10 лет назад 0
Чтобы перейти на bash 4.1 или более позднюю версию, вы можете следовать инструкциям здесь: http://apple.stackexchange.com/questions/70132/set-default-shell-to-macports-bash-in-mac-os-x-10- 6-8 ThomasW 10 лет назад 1
Последним путем OSX является `/ opt / local / share / git / contrib / complete / git-prompt.sh` согласно ответу здесь [ссылка] (http://stackoverflow.com/questions/12870928/mac-bash-git- ps1-командный не обретенный) bgs 9 лет назад 0
54
grundprinzip

Если вы установили мерзавец с помощью доморощенного, чем вы можете настроить совет MacPorts немного и добавить в свои .bash_profileи.bashrc

if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then . `brew --prefix`/etc/bash_completion.d/git-completion.bash fi 

Лучший способ проверить, правильно ли установлен git с помощью homebrew ist для выполнения

brew info git 

и проверьте вывод для каталога установки завершения git bash

В последней версии Git (1.7.12) также требуется следующее, чтобы включить приглашение.

if [ -f `brew --prefix`/etc/bash_completion.d/git-prompt.sh ]; then . `brew --prefix`/etc/bash_completion.d/git-prompt.sh fi 
Подробнее о `` __git_ps1``, см. Http://superuser.com/a/477749/90231 ответ в этом стеке. RichVel 10 лет назад 0
26
iansheridan

Все, что вам нужно сделать, это поместить git-completion.bashфайл в ваш домашний binкаталог пользователя и поместить в вас .profileили .bash_profileфайл следующее:

export PATH="$HOME/bin:$PATH" source ~/bin/git-completion.bash PS1='[\u@\h \w$(__git_ps1 " (%s)")]\$ ' 

Что это делает, так это убедитесь, что ваша локальная корзина находится в ПУТИ, а sourceкоманда запускает работу. Затем, конечно, изменение PS1 помещает текущую проверенную ветку в приглашение.

Таким образом, не нужно устанавливать MacPort, чтобы затем установить «завершающую» версию GIT (особенно раздражает, если она у вас уже установлена).

https://github.com/git/git/raw/master/contrib/completion/git-completion.bash Nickolay 13 лет назад 2
Для тех, кто интересуется, как совместить эту вещь PS1 с цветами в вашем приглашении, смотрите: http://stackoverflow.com/questions/816790/append-gits-branch-name-to-command-prompt Nickolay 13 лет назад 1
Точнее, git-creation.bash просто должен быть где-то в вашем `$ PATH`. Я решил поместить свой файл в `/ usr / local / bin /`, чтобы мне не пришлось изменять существующий `$ PATH`. metavida 12 лет назад 1
13
Andy

Хотя текущий ответ верен для старых MacPorts, существует новая проблема с самыми последними MacPorts, приводящая к той же ошибке.

Текущий пакет завершения bash (2.0 r1) требует как минимум bash 4.1 для правильной работы. Как обычно использует OS X Terminal, /bin/bashон получает только 3.x. Вы должны изменить настройки /opt/local/bin/bash -lсвоего терминала, чтобы использовать их, как описано в документации MacPorts здесь: http://trac.macports.org/wiki/howto/bash-completion

Это самый правильный ответ, так как у меня возникла проблема только после обновления macports. Единственный недостаток использования macports bash из терминала - это то, что теперь он предупреждает меня о завершении запущенных процессов, когда я пытаюсь закрыть окно терминала - вы сталкивались с этим? vitch 11 лет назад 0
6
jtimberman

Вам необходимо найти функции завершения команды. Добавьте к вашему .bashrc_profile перед PS1:

. /opt/local/etc/bash_completion.d/git-completion 
git-creation.bash можно найти здесь: https://raw.github.com/git/git/master/contrib/completion/git-completion.bash TJ Biddle 10 лет назад 0
5
studgeek

Досадно, что это было сломано еще раз. На этот раз его парни с версией 1.7.12-1. Чтобы позволить людям иметь только функцию подсказки без функции завершения (что может замедлить работу), они реорганизовали функцию подсказки из bash_completion / git в свой собственный файл git-prompt.sh.

Поэтому добавление bash_completion, как описано @Lara, только завершит вас (нажатие на вкладку завершает имена тегов / веток).

Чтобы получить его, __git_ps1чтобы использовать его в приглашении PS1, вам также необходимо добавить следующее в ~ / .profile.

. /opt/local/share/doc/git-core/contrib/completion/git-prompt.sh

Некоторая справка здесь - https://bbs.archlinux.org/viewtopic.php?pid=1163632#p1163632

Данный файл: https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh papercowboy 11 лет назад 0
3
derek73

Или с доморощенным

brew install bash-completion git-extras 
Большое спасибо. Это должно быть `brew install bash-creation git-extras`, хотя (тире вместо подчеркивания). simonair 11 лет назад 2
2
John Mellor

Нашел решение по похожему вопросу :

ГИТ-OSX-инсталлятор поставляется с git-completion.bashи устанавливает его /usr/local/git/contrib/completion/. Просто .bash_profileполучите этот файл из вашего, чтобы получить __git_ps1.

2
haysclark

Для Mountain Lion и Mac-Ports мне нужно было использовать следующие строки в моем .bash_profile, чтобы получить и __git_ps1, и дополнения для нормальной работы:

# Bash shell command completion if [ -f /opt/local/share/doc/git-core/contrib/completion/git-completion.bash ]; then . /opt/local/share/doc/git-core/contrib/completion/git-completion.bash fi  if [ -f /opt/local/share/doc/git-core/contrib/completion/git-prompt.sh ]; then . /opt/local/share/doc/git-core/contrib/completion/git-prompt.sh fi 
1
ecloud

I use brew, so a master bash_completion script which runs all the ones in bash_completion.d seems not to be provided. The solutions which propose just running a single script to add git completions aren't extensible, because different packages will add different completion scripts, and you probably want to run them all. Therefore I added this (adapted from Arch Linux) to the end of /etc/bashrc:

# source compat completion directory definitions BASH_COMPLETION_COMPAT_DIR=/usr/local/etc/bash_completion.d if [[ -d $BASH_COMPLETION_COMPAT_DIR && -r $BASH_COMPLETION_COMPAT_DIR && \ -x $BASH_COMPLETION_COMPAT_DIR ]]; then for i in $(LC_ALL=C command ls "$BASH_COMPLETION_COMPAT_DIR"); do i=$BASH_COMPLETION_COMPAT_DIR/$i [[ -f $i && -r $i ]] && . "$i" done fi 

Похожие вопросы