Я пытаюсь разобрать ветку, в которой я сейчас нахожусь, к моей подсказке bash.Это довольно легко, используя следующую функцию bash в PS1:
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\[$(tput setaf 3)\]\u\[$(tput setaf 2)\]@\[$(tput setaf 4)\]\h \[$(tput setaf 5)\]\w\[$(tput setaf 7)\]\[$(tput setaf 3)\]\$(parse_git_branch) \[$(tput setaf 7)\]\\$ \[$(tput sgr0)\]"
Моя проблема возникает, когда в приглашении все еще отображается ветвь «извлечено» из папки внутри файла .gitignore
.Например: предположим, что /home/rbroggi/workspace/project_one
является корнем моего репозитория, отслеживаемого git (например, место, где находится папка .git
).И в этом репозитории у меня есть файл .gitignore /home/rbroggi/workspace/project_one/.gitignore
со следующей записью: ignoredfolder/
.Я бы предположил пустой вывод / результат из git branch
после смены каталога на ignoredfolder
, но вместо этого он продолжает выводить ветвь, которую я извлек в родительской папке.Это очень раздражает, и, возможно, если бы я видел, как работает команда git branch
, я мог бы избежать вывода игнорируемых папок.
rbroggi@arch ~/workspace/project_one (master) $ pwd
/home/rbroggi/workspace/project_one
rbroggi@arch ~/workspace/project_one (master) $ cat .gitignore
ignoredfolder/
rbroggi@arch ~/workspace/project_one (master) $ cd ignoredfolder/
rbroggi@arch ~/workspace/project_one/ignoredfolder (master) $ git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
(master)
rbroggi@arch ~/workspace/project_one/ignoredfolder (master) $
Спасибо, что нашли время, чтобы попытаться помочь мне.
Родриго Броджи