Я добавил __git_ps1 в PS1 в .bash_profile, теперь я получаю (master) для всех папок, которые не являются git-репозиториями.


1

Я на Mac (10.6.5). Вот пример того, что идет не так:

[m@m ~ (master)]$ cd ~/Documents
[m@m ~/Documents (master)]$ cd ~/Applications
[m@m ~/Applications (master)]$ cd ~/Library
[m@m ~/Library (master)]$ cd ~/Sites/somesite
[m@m ~/Sites/somerepo (FEATURE_SOMEFEATURE)]$

Вот соответствующее содержимое моего .bash_profile:

source ~/.git-completion.bash
PS1='[\u@\h \w$(__git_ps1 " (%s)")]\$ '

Я использую стандартный скрипт завершения git - я просто скопировал его в свой домашний каталог.

Ответы:


1

Я подозреваю, что вы инициализировали свой домашний каталог как Git-репозиторий.

Вы должны убедиться в этом, проверив выходные данные git rev-parse --git-dirв ~/Documentsи ~/Applications(т. Е. Везде, где вы неожиданно видите мастера в своем приглашении). Результаты, скорее всего, скажут вам, что Git использует /Users/yourname/.gitв качестве GIT_DIR для этих других каталогов. Это будет иметь место для любого (транзитивного) подкаталога вашего домашнего каталога, который сам по себе не является другим хранилищем (или под тем, который находится ближе, чем ваш домашний каталог).

То же самое касается наличия корневого каталога или его /Usersинициализации в качестве Git-репозитория (приглашение получит свой статус для всего, что находится под ним, кроме его собственного Git-репозитория (или такого другого Git-репозитория)).


2

Это дефект в __git_ps1. Проблема заключается в том, что имя ветви не обновляется после изменения каталога. Даже после проверки другой ветки PS1 по-прежнему показывает ветку, которую вы ранее проверяли. Появляется только в OS X, в Linux работает нормально.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.