(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

как вы могли бы видеть / сказать, Да, у меня есть автоматическое завершение, и он отлично работает!

я наткнулся на этот вопрос: "переменная PS1 env не работает на mac " что дает код

alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* (.*)/()/'"

поэтому я добавляю его к моему .bash_profile надеясь, что это что-то изменит. Ну, это сделал. Он просто изменил вывод ошибок.

здесь .bash_profile С добавлением:

alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* (.*)/()/'"

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 сам, но просто пытался увидеть, будет ли он распознан, сделав это. Да, у меня есть . Вот как я получил автозаполнение на своей машине.

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 затем перечислены .

изменить 10/13/12 - Решается Марк Longair (ниже)

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

if [ -f ~/.git-prompt.sh ]; then
  source ~/.git-prompt.sh
  export PS1='Geoff[W]$(__git_ps1 "(%s)"): '
fi

17 ответов


вы установили версию git-completion.bash С master - в истории развития 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' должно работать нормально.


после обновления до OSX 10.9 Mavericks мне пришлось ссылаться на следующие файлы, чтобы получить завершение команды git shell и приглашение 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)")$ '

вы должны

$ brew install bash bash-завершение git

затем источник "$(brew --prefix)/etc/bash_completion" в вашем .bashrc следующее.


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

выполните следующие действия в терминале:

curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh > ~/.bash_git

открыть/создать файл:

$ vi ~/.bash_profile

добавьте в файл следующее:

source ~/.bash_git
export PS1='\[3[01;32m\]os \[3[01;34m\]\w $(__git_ps1 "[%s]")$\[3[00m\] '
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWUPSTREAM="auto"

наконец, источник его с помощью:

$ source ~/.bash_profile

это решит проблему bash: __git_ps1: command not found.

также ваше приглашение изменится на "os". Чтобы изменить " os "на что-то другое, измените строку" os " в строке экспорта PS1.


решение для MacOS Sierra и Git версии 2.10.1

Шаг 1: Установите Git

вы можете пропустить этот шаг, если вы уже установили последнюю версию git.

загрузить пакет git из браузера https://git-scm.com/download/

Примечание: Если вы устанавливаете с curl [option] https://... опция для загрузки, вам нужно будет убедиться, что ваша система поддерживает SSL. Итак, для new comer, чтобы загрузить с браузер и установка непосредственно из установщика git намного проще.

Проверка Установки:
  • показать, где находится ваш каталог git по адресу:which git
  • показать, какая версия вашего git в настоящее время:git --version текущая версия должна быть 2.10.1.

Шаг 2: Добавьте свой профиль git в свою оболочку

  1. откройте Профиль оболочки:
    • nano ~/.bash_profile или nano ~/.bashrc зависит от где находится ваша модификация.
  2. добавьте в файл следующий код:
    • 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: Добавить сценарий выбора

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

Теперь вы должны увидеть, что приглашение git работает правильно и показывает, в какой ветви вы находитесь прямо сейчас.

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

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

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


__в Git_PS1 для bash это сейчас можно найти в git-prompt.sh в /usr/местные/и т. д./bash_completion.d на моем вареве установлен git версии 1.8.1.5


это работает в OS 10.8 В .файл

if [ -f ~/.git-prompt.sh ]; then
  source ~/.git-prompt.sh
  export PS1='YOURNAME[\W]$(__git_ps1 "(%s)"): '
fi

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


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

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

cd/usr / local
ГИТ выборки происхождения
ГИТ сброс -- hard origin/master

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

brew upgrade git

Проблема Решена! ;-)


по крайней мере с Xcode 6, у вас уже есть git-completion.bash. Он находится внутри пакета приложений Xcode.

просто добавьте это к вашему .bashrc следующее:

source `xcode-select -p`/usr/share/git-core/git-completion.bash

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

У меня были некоторые странные проблемы с sourcing 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, и его легко настроить).

надеюсь, это поможет!


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

# Change command prompt
alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \ .   (.*\)/()/'"

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


высокое разрешение Сьерра чистое с цветами !

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

просто добавьте его в свой~/.bashrc или ~/.файл

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 и индикатор в приглашении, изменились ли файлы / были добавлены, прямо запеченные в него:

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='\[3[32m\]\u@\h\[3[00m\]:\[3[34m\]\w\[3[31m\]$(__git_ps1)\[3[00m\]$ '

обязательно используйте правильный путь! Я использовал homebrew для установки git, используйте brew list git получить путь к текущей установке.

было бы неплохо не использовать жесткий кодированный путь, но не знаю, как получить путь к текущей установке.

больше информации здесь: http://en.newinstance.it/2010/05/23/git-autocompletion-and-enhanced-bash-prompt/


для 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

  1. загрузить файлы git-prompt.sh и git-завершение.Баш отсюда завершение Git
  2. переименовать файлы.
  3. переместить эти файлы в свой домашний каталог.
  4. добавьте исходный файл в .файл

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