(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.

  1. Добавьте следующий код в конфигурацию PS1:

    • Вариант 1: добавьте прямо в свой PS1: export PS1='\w$(__git_ps1 "(%s)") > '

      Я предпочитаю этот простой подход, так как я уже знаю, что .git-completion.bash есть в моем домашнем каталоге, и я могу добавить другой формат приглашения перед ним. вот мое личное приглашение для вашей справки: export PS1='\t H#\! \u:\w$(__git_ps1 "{%s}") -->> '
    • Вариант 2: Добавить выбор script

    if [ -f ~/.git-completion.bash ]; then
          export PS1='\w$(__git_ps1 "(%s)") > '
    fi
  2. Сохраните и используйте профиль: 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

  • Загрузите файлы git -prompt.sh и git -completion.bash из Git
  • Переименуйте файлы.
  • Переместите эти файлы в домашний каталог.
  • Добавьте исходный файл в .bash_profile

    source ~/git-completion0.bash
    source ~/git-prompt0.sh
    and four to trigger the code block.