(Mac) -bash: __git_ps1: команда не найдена

Я пытаюсь изменить командную строку в терминале. Я продолжаю получать ошибку: я

-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

Как вы можете видеть / сказать, да, у меня установлено автозаполнение, и оно отлично работает!

Я сталкивался с этим вопросом: Переменная PS1 env не работает на 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

А теперь здесьs измененный вывод ошибки:

sed: (%s): No such file or directory

Примечание: яМы также переместили псевдоним ниже источника без разницы. я имеюgit версия 1.7.12.1

Это должно быть простое изменение. Может кто-нибудь, пожалуйста, помогите мне?

Редактировать 13.10.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

ls -la затем перечисляет.git-completion.bash файл.

Редактировать 13.10.12 - РешеноМарк Лонгэйр (ниже)

Следующий код работал для меня в.bash_profile в то время как другие не ...

if [ -f ~/.git-prompt.sh ]; then
  source ~/.git-prompt.sh
  export PS1='Geoff[\W]$(__git_ps1 "(%s)"): '
fi
 Jack Frost03 мар. 2013 г., 21:20
Принятый ответ хорош, но приглашение также можно включить, нажавgit  как отмечено в коммите, на который ссылается Марк Лонгэйр.
 mac08 апр. 2015 г., 01:16
Я добавил в .bashrc, а затем он начал работать. Странный!
 rob mayoff13 окт. 2012 г., 09:51
мойgit-completion.bash определяет__git_ps1 как функция оболочки. Твой? Как вы знаете, завершение работает? Что происходит, когда вы печатаете <git hTAB>?
 Nick K922 июн. 2014 г., 22:17
Проверка -f работала, чтобы исправить эту ошибку при запуске bash внутри экрана (1) в OS X 10.8.5. Понятия не имею почему, поскольку файл существует независимо, но, тем не менее, спасибо!
 Yannis Dran16 февр. 2014 г., 15:08
Тот'Это не только хороший, понятный вопрос, но и полезный ресурс, помогающий найти решение. Хорошо заслуженный голос.
 Geoff13 окт. 2012 г., 21:15
Когда я набираю это, оно заканчивается git help [пробел]

Ответы на вопрос(17)

Для Macports я должен был добавить:source /opt/local/share/git-core/git-prompt.sh на мой. / профиль

 IgorGanapolsky22 дек. 2016 г., 19:28
Здесь нет~ / .Profile на Mac.
 velop23 дек. 2016 г., 10:32
@IgorGanapolsky Я думаю, у вас нетMacPorts установлены? Просто делайtouch ~/.profile, Но вам, очевидно, нужен файл в: /opt/local/share/git-core/git-prompt.sh

High Sierra чистое решение с цветами!

Нет загрузок. Нет варева. Нет Xcode

Просто добавьте его в ~ / .bashrc или ~ / .bash_profile

export CLICOLOR=1
[ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh ] && . /Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh
export GIT_PS1_SHOWCOLORHINTS=1
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWUPSTREAM="auto"
PROMPT_COMMAND='__git_ps1 "\h:\W \u" "\\\$ "'

__git_ps1 для bash теперь находится в git-prompt.sh в /usr/local/etc/bash_completion.d на моем brew, установленном git версии 1.8.1.5

Я знаю это'не настоящий ответ ...

У меня были некоторые странные проблемы с источником git-prompt.sh в моем .bashrc, поэтому я начал искать другое решение. Вот этот:http://www.jqno.nl/post/2012/04/02/howto-display-the-current-git-branch-in-your-prompt/ Безразлично»t __git_ps1 и автор утверждает, что он работает и на Mac (сейчас он отлично работает на моей Ubuntu, и это 'легко настроить).

Я надеюсь, что это помогает!

Я делал курс по Udacity для git hub, и у меня возникла та же проблема. Вот мой последний код, который делает, это работает правильно.

# 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

У меня была такая же проблема при обновлении до Yosemite.

Я просто должен был изменить~/.bashrc вsource /usr/local/etc/bash_completion.d/git-prompt.sh вместо старого пути.

затем повторно отправьте ваш. ~/.bashrc чтобы получить эффект.

После обновления до 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)")\$ '
 rcd19 янв. 2015 г., 10:08
Это работало и в 10.10 / Yosemite.
 RedBassett12 нояб. 2014 г., 09:45
Хотя принятый ответ от @marklongair является хорошим описанием, я нашел этот вопрос с помощью поиска в Google сообщения об ошибке (после обновления до OS 10.10), и этот ответ является самым простым решением для моей проблемы (просто изменив путь к новому местоположению ).
 IgorGanapolsky22 дек. 2016 г., 19:19
Я добавил предложенные вами строки в.bash_profile, но я все еще получаю ошибку:bash: __docker_machine_ps1: command not found
 jeremyjjbrown31 июл. 2014 г., 05:23
Это было также моей проблемой в OSV 10,9
 Rein14 окт. 2015 г., 09:20
Это работало для меня в 10.10.5 Yosemite, однако я изменил расположение git-prompt на~/.git_prompt.sh, Другие решения не сделалит работа.
Решение для 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.bashsource /usr/local/git/contrib/completion/git-prompt.sh

Примечание: место установки git изменилось с opt / directory на usr / local / после обновления OSX до El Capitain, и поэтому некоторые из старых ответов выше не 'больше не работает в MacOS Sierra.

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

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

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

Вариант 2: Добавить сценарий выбора

if [ -f ~/.git-completion.bash ]; then
      export PS1='\w$(__git_ps1 "(%s)") > '
fi

Сохраните и используйте профиль:source ~/.bash_profile или жеsource ~/.bashrc

Теперь вы должны увидеть, что приглашение git работает правильно и показывает, в какой ветке вы находитесь сейчас.
Скачать файлыgit-prompt.sh а такжеГИТ-completion.bash из этогоGit завершениеПереименуйте файлы.Переместите эти файлы в свой домашний каталог.

Добавьте исходный файл в .bash_profile

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

Если ты'Вы надеетесь использовать Homebrew для обновления Git, и выЧтобы ваша система вообще устарела (как я это сделал), вам, возможно, потребуется сначала обновить сам Homebrew (согласноОбновление brew: следующие неотслеживаемые файлы рабочего дерева будут перезаписаны слиянием: спасибо @ chris-frisina)

Сначала приведите Homebrew в соответствие с текущей версией

cd / usr / local

происхождение

git reset --hard origin / master

Затем обновите Git:

варить git

Задача решена! ;-)

 IgorGanapolsky22 дек. 2016 г., 19:26
Все еще получите вышеупомянутую ошибку ...

это работает в OS 10.8 в .bash_profile

if [ -f ~/.git-prompt.sh ]; then
  source ~/.git-prompt.sh
  export PS1='YOURNAME[\W]$(__git_ps1 "(%s)"): '
fi
 IgorGanapolsky22 дек. 2016 г., 19:27
Безразлично»исправить ошибку:bash: __docker_machine_ps1: команда не найдена

По крайней мере, с Xcode 6 у вас уже естьgit-completion.bash, Это's внутри пакета приложения Xcode.

Просто добавьте это в ваш .bashrc:

source `xcode-select -p`/usr/share/git-core/git-completion.bash
 IgorGanapolsky22 дек. 2016 г., 19:26
Это неничего не решить ...

Следующее сработало для меня как шарм:

Запустите следующее в вашем терминале:

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

Также ваша подсказка изменится на "Операционные системы ", Изменить "Операционные системы" на что-то другое, модифицируйОперационные системы" строка в строке экспорта PS1.

 IgorGanapolsky22 дек. 2016 г., 19:24
Я все еще получаю ошибкуSh-C "Чисто && / Бен / Баш» bash: __docker_machine_ps1: команда не найдена каждый раз, когда я вхожу в Docker CLI.

Этот работал для меня, и у него был цветной вывод 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/

Решение Вопроса

Вы'мы установили версиюgit-completion.bash отmaster - в мерзавцеИстория развития это после коммита, который расколол__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' должно работать нормально.

 IgorGanapolsky22 дек. 2016 г., 19:18
Я все еще получаю ошибку:bash: __docker_machine_ps1: команда не найдена
 Ramon de la Fuente16 июн. 2014 г., 16:42
В MacPorts путь изменился, когда пакетgit-core был замененgit, увидетьэтот вопрос
 liudongmiao22 февр. 2016 г., 09:24
Это пропустит текущий каталог в Mac OS X. Итак, я используюPROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND; }__git_ps1 '\u:\w' '\\\$ '"
 Christophe Roussy25 мар. 2015 г., 10:12
@YannisDran вы можетеsource файл конфигурации, чтобы избежать перезагрузки терминала.
 Mark Longair13 окт. 2012 г., 21:41
@ designer84: спасибо за дополнительную информацию - я думаю, что 'Теперь ясно, в чем проблема, и яМы обновили мой ответ объяснением.
 Mark Longair14 окт. 2012 г., 11:17
@ designer84: яЯ рад слышать, что это сработало. Причина, по которой версия из вашей установленной копии неработа состоит в том, что git 1.7.12.1 после разделения наgit-completion.bash а такжеgit-prompt.sh что я описал - должно быть.git-prompt.sh в/usr/local/git/contrib/completion/
 Geoff14 окт. 2012 г., 04:17
Почему это не работает? if [-f /usr/local/git/contrib/completion/git-completion.bash]; затем источник /usr/local/git/contrib/completion/git-completion.bash export PS1 = '[\ W] $ (__ git_ps1 "(% S)»): ' фи
 Geoff14 окт. 2012 г., 04:37
Взгляд на каталог показывает это там ...
 Mark Longair20 авг. 2013 г., 10:41
@ op1ekun: простите, яя не уверен, ябоюсь - если только тымы установили одну из этих переменных окружения:github.com/git/git/blob/master/contrib/completion/... и хранилище является особенно большим. Если эти переменные не установлены (по умолчанию)__git_ps1 должен быть очень легким и быстрым, независимо от хранилища, но он будет вызывать больше работы, если установлен.
 op1ekun20 авг. 2013 г., 10:06
Я использовал тебе метод Марка. К сожалению, в тот момент, когда я вхожу "Git Directory " когда у меня обычно отображалась ветка в приглашении ... Весь ад вырвался на свободу ... Первый bash начинает зависать, а потом весь компьютер, пока не появится 'прошло и перезагрузка необходима ... Есть идеи?
 Martin Carel08 июл. 2015 г., 23:27
На OSX 10.10.4 с git 2.4.5, установленным через Homebrew, обаgit-prompt.sh а такжеgit-completion.bash найдены в`brew --prefix git`/etc/bash_completion.d/ так же, как в OSX 10.9, как @dokkaebi упоминалось в предыдущем комментарии.
 Yannis Dran16 февр. 2014 г., 14:43
Примечание. Чтобы изменения вступили в силу, необходимо перезапустить терминал. Мне потребовалось время, чтобы понять это.
 Geoff13 окт. 2012 г., 21:19
Вы'правильно, что я неЯ не хочу сам определять __git_ps1. Я просто пытался увидеть, узнает ли он это, и нет. У меня есть .git-creation.bash в моем корне. Я'Я уточню мой вопрос выше, чтобы включить, как я получил автоматическое завершение работы ...
 dokkaebi10 февр. 2014 г., 23:02
На OSX 10.9 с git 1.8.5.3, установленным через Homebrew, обаgit-prompt.sh а такжеgit-completion.bash находятся в.`brew --prefix git`/etc/bash_completion.d/

Для мерзавца есть/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
 IgorGanapolsky22 дек. 2016 г., 19:28
Все еще получаю эту ошибку:bash: __docker_machine_ps1: command not found

Вам следует

$ brew установить bash

Тогда источник "$ (brew --prefix) / etc / bash_completion " в вашем .bashrc.

 Steven Shaw21 окт. 2016 г., 04:51
@febLey Да, местоположение изменилось. Я'Мы обновили ответ. Благодарю.
 Jed Schneider08 дек. 2014 г., 13:02
для установленных версий brew, это работало для меня
 febLey19 окт. 2016 г., 15:34
Отличный ответ, безусловно, лучший способ, если git установлен вместе с brew. Но я думаю, что вам нужно найти это: source $ (brew --prefix) /etc/bash_completion.d/git-prompt.sh
 IgorGanapolsky22 дек. 2016 г., 19:22
Это нет работа. Я получаю ошибки:bash: /usr/local/etc/bash_completion.d/git-prompt.sh: разрешение отклонено bash: __docker_machine_ps1: команда не найдена

Ваш ответ на вопрос