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

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. Так что для новичка, чтобы загрузить с браузер и установить непосредственно из Git installer намного проще.

Проверка Правильности Установки :
  • показать, где находится ваш каталог 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/local/etc / bash_completion.d на моем brew установлена версия 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: следующие неотслеженные файлы рабочего дерева будут перезаписаны слиянием: спасибо @chris-frisina)

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

cd / usr / local
ГИТ выборки происхождения
git reset -- 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

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

У меня были некоторые странные проблемы с поиском 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-завершение.Баш отсюда завершение ГИТ
  2. переименовать файлы.
  3. переместить эти файлы в свой домашний каталог.
  4. Добавить файл на .файл

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