(Mac) - bash: __git_ps1: команда не найдена
Я пытаюсь изменить свою команду promt в терминале. Я продолжаю получать ошибку:
-bash: __git_ps1: command not found
Я попробовал это, просто введя его в терминал, как есть: __git_ps1
. Я также пробовал это в .bash_profile
if [ -f ~/.git-completion.bash ]; then
source ~/.git-completion.bash
export PS1='[\W]$(__git_ps1 "(%s)"): '
fi
Как вы могли бы видеть/рассказывать, да, у меня есть автоматическое завершение, и он отлично работает!
Я столкнулся с этим вопросом: "переменная env PS1 не работает на Mac", которая дает код
alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"
Поэтому я добавляю его в мой .bash_profile
, надеясь, что он что-то изменит. Ну, да. Он просто изменил вывод ошибки.
Здесь .bash_profile
с добавлением:
alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"
if [ -f ~/.git-completion.bash ]; then
source ~/.git-completion.bash
export PS1='[\W]$(__git_ps1 "(%s)"): '
fi
И теперь здесь изменился вывод ошибки:
sed: (%s): No such file or directory
Примечание: Я также переместил псевдоним ниже источника без каких-либо различий. У меня есть git версия 1.7.12.1
Это должно быть простое изменение. Может кто-нибудь, пожалуйста, помогите мне?
Редактировать 10/13/12
Нет, я определенно не хочу сам определять __git_ps1, но просто пытался понять, будет ли это признано. Да, у меня установлен файл .git-completion.bash
. Здесь, как я получил автоматическое завершение на моей машине.
cd ~
curl -OL https://github.com/git/git/raw/master/contrib/completion/git-completion.bash
mv ~/git.completion.bash ~/.git-completion.bash
A ls -la
затем перечисляет файл .git-completion.bash
.
Редактировать 10/13/12 - Решено Марк Лонгэйр (ниже)
Следующий код работал у меня в .bash_profile
, в то время как другие не...
if [ -f ~/.git-prompt.sh ]; then
source ~/.git-prompt.sh
export PS1='Geoff[\W]$(__git_ps1 "(%s)"): '
fi
Ответы
Ответ 1
Вы установили версию истории git-completion.bash
из master
- in git истории развития после фиксации, которая отделила функцию __git_ps1
от функциональности завершения до нового файла (git-prompt.sh
), Конец, который ввел это изменение, объясняющее обоснование, af31a456.
Я бы предположил, что вы просто источник версии git-completion.bash
(или git-prompt.sh
), который связан с вашей установкой git.
Однако, если по какой-то причине вы все еще хотите использовать эту функциональность, используя скрипты, отдельно загруженные из master
, вы должны скачать git-prompt.sh
аналогично:
curl -o ~/.git-prompt.sh \
https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh
... и добавьте следующую строку в ~/.bash_profile
:
source ~/.git-prompt.sh
Затем ваша переменная PS1
, которая включает __git_ps1 '%s'
, должна работать нормально.
Ответ 2
После обновления до OSX 10.9 Mavericks мне пришлось ссылаться на следующие файлы, чтобы получить завершение командной оболочки оболочки git и приглашение git снова работать.
Из моего .bash_profile или подобного:
if [ -f /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash ]; then
. /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash
fi
source /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh
#shell prompt example
PS1='\u $(__git_ps1 "(%s)")\$ '
Ответ 3
Вы должны
$brew установить bash bash-completion git
Затем источник "$ (brew --prefix)/etc/bash_completion" в вашем .bashrc.
Ответ 4
После меня работали как шарм:
Запустите в своем терминале следующее:
curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh > ~/.bash_git
Открыть/Создать файл bash_profile:
$ vi ~/.bash_profile
Добавить в файл следующее:
source ~/.bash_git
export PS1='\[\033[01;32m\]os \[\033[01;34m\]\w $(__git_ps1 "[%s]")\$\[\033[00m\] '
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWUPSTREAM="auto"
Наконец, отправьте его с помощью:
$ source ~/.bash_profile
Это решит проблему bash: __git_ps1: command not found
.
Также ваше приглашение изменится на "os" . Чтобы изменить "os" на что-то еще, измените строку "os" в строке экспорта PS1.
Ответ 5
Решение для MacOS Sierra и git версия 2.10.1 < 2017-2-06 >
Шаг 1: Установите Git
Вы можете пропустить этот шаг, если вы уже установили последний git.
Загрузить git пакет из браузера https://git-scm.com/download/
Примечание. Если вы устанавливаете с помощью опции curl [option] https://...
для загрузки, вам необходимо убедиться, что ваша система поддерживает SSL. Так что для нового посетителя, для загрузки из браузера и установки непосредственно из git установщик намного проще.
Проверка установки:
- Показать, где находится ваш каталог git по адресу:
which git
- Покажите, какая версия git в настоящее время:
git --version
текущая версия должна быть 2.10.1.
Шаг 2: добавьте ваш профиль git в оболочку
- Откройте профиль оболочки:
-
nano ~/.bash_profile
или nano ~/.bashrc
Зависит от того, где находится ваша модификация.
- Добавьте в файл следующий код:
-
source /usr/local/git/contrib/completion/git-completion.bash
-
source /usr/local/git/contrib/completion/git-prompt.sh
Примечание. Место установки git изменено с opt/directory на usr/local/после обновления OSX до El Capitain, и поэтому некоторые из старых ответов выше не работают в MacOS Sierra.
-
Добавьте следующий код в конфигурацию PS1:
if [ -f ~/.git-completion.bash ]; then
export PS1='\w$(__git_ps1 "(%s)") > '
fi
-
Сохраните и используйте профиль: source ~/.bash_profile
или source ~/.bashrc
Теперь вы должны увидеть, что приглашение git работает правильно и показывает, в какой ветке вы находитесь прямо сейчас.
Ответ 6
У меня была такая же проблема при обновлении до Yosemite.
Мне просто пришлось изменить ~/.bashrc
на source /usr/local/etc/bash_completion.d/git-prompt.sh
вместо старого пути.
затем переигрите свой . ~/.bashrc
, чтобы получить эффект.
Ответ 7
__ git_ps1 для bash теперь находится в git -prompt.sh в /usr/local/etc/bash _completion.d на моей brew установленной версии git версии 1.8.1.5
Ответ 8
это работает в OS 10.8 в .bash_profile
if [ -f ~/.git-prompt.sh ]; then
source ~/.git-prompt.sh
export PS1='YOURNAME[\W]$(__git_ps1 "(%s)"): '
fi
Ответ 9
Для macports мне пришлось добавить: source /opt/local/share/git-core/git-prompt.sh
в мой./profile
Ответ 10
Если вы хотите использовать Homebrew для обновления Git, и вы позволили вашей системе устаревать вообще (как и я), вам, возможно, придется сначала обновить Homebrew (в соответствии с brew update: следующие файлы без следа дерева дерева будут перезаписаны слиянием: благодаря @chris-frisina)
Сначала приведите Homebrew в соответствие с текущей версией
cd/usr/local
git fetch источник
Git reset - грубое происхождение/мастер
Затем обновите Git:
brew upgrade git
Проблема решена!; -)
Ответ 11
По крайней мере, с Xcode 6 у вас уже есть git-completion.bash
. Это внутри пакета приложений Xcode.
Просто добавьте это в свой .bashrc:
source `xcode-select -p`/usr/share/git-core/git-completion.bash
Ответ 12
Я знаю, что это не настоящий ответ...
У меня были некоторые странные проблемы с поиском git -prompt.sh в моем .bashrc, поэтому я начал искать другое решение. Это: http://www.jqno.nl/post/2012/04/02/howto-display-the-current-git-branch-in-your-prompt/ не использует __git_ps1, а автор утверждает, что он работает и на Mac (пока он отлично работает на моем Ubuntu, и это легко для настройки).
Надеюсь, это поможет!
Ответ 13
Это работало для меня, и у него был цветной вывод git и индикатор в подсказке, были ли файлы изменены/добавлены, правильно запечены в нем:
GIT_PS1_SHOWDIRTYSTATE=true
. /usr/local/Cellar/git/1.8.5.2/etc/bash_completion.d/git-completion.bash
. /usr/local/Cellar/git/1.8.5.2/etc/bash_completion.d/git-prompt.sh
PS1='\[\033[32m\]\[email protected]\h\[\033[00m\]:\[\033[34m\]\w\[\033[31m\]$(__git_ps1)\[\033[00m\]\$ '
Обязательно используйте правильный путь! Я использовал homebrew для установки git, используйте brew list git
, чтобы получить путь к вашей текущей установке.
Было бы неплохо не использовать жестко закодированный путь, но не знаю, как получить путь к текущей установке.
Дополнительная информация здесь: http://en.newinstance.it/2010/05/23/git-autocompletion-and-enhanced-bash-prompt/
Ответ 14
Для git есть /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh
. И посмотрите также /etc/bashrc_Apple_Terminal
.
Итак, я помещаю их в ~/.bash_profile
:
if [ -f /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh ]; then
. /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh
export GIT_PS1_SHOWCOLORHINTS=1
export GIT_PS1_SHOWDIRTYSTATE=1
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND; }__git_ps1 '\u:\w' '\\\$ '"
fi
Ответ 15
Я делал курс по Udacity для концентратора git и имел эту же проблему. Вот мой последний код, который делает, работает правильно.
# Change command prompt
alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \ . (.*\)/(\1)/'"
if [ -f ~/.git-completion.bash ]; then
source ~/.git-completion.bash
export PS1='[\W]$(__git_ps1 "(%s)"): '
fi
source ~/.git-prompt.sh
export GIT_PS1_SHOWDIRTYSTATE=1
# '\u' adds the name of the current user to the prompt
# '\$(__git_ps1)' adds git-related stuff
# '\W' adds the name of the current directory
export PS1="$purple\u$green\$(__git_ps1)$blue \W $ $reset"
Это работает!
https://i.stack.imgur.com/d0lvb.jpg
Ответ 16