Я добавил __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 работает нормально.

Джон
источник