终端中show branch的问题

时间:2014-03-21 16:48:54

标签: linux git shell terminal

我的shell脚本有问题,它在〜/ .bashrc中:

parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}

PS1="\[${debian_chroot:+($debian_chroot)}\033[1;34m\u\033[1;34m@\h\033[0;32m:\w\033[1;35m $(parse_git_branch) $ \033[0m\]"

我需要它来显示当前分支,并且它做得很好,但是当我需要更改目录以获取源〜/。 Bashrc重返工作岗位。

另一个问题是,当我删除错误输入的内容时,它会删除该行上的所有信息,包括vinicius @ pontocom:〜(master)$

3 个答案:

答案 0 :(得分:0)

Git已经附带了用于显示当前分支的shell脚本,您可以通过添加

来使用它们
source '/usr/local/etc/bash_completion.d/git-prompt.sh'

到OS X上的bash配置文件。如果你正在使用Debian,你应该能够source相同的文件,但它的安装路径可能不同。

您也可以通过获取此文件来启用Git bash完成:

source '/usr/local/etc/bash_completion.d/git-completion.bash'

答案 1 :(得分:0)

代码中的问题是你在双引号内有一个命令替换,因此当你定义PS1时它只会执行一次。

尝试延迟执行:

PS1="... \$(parse_git_branch) $ \033[0m\]"

答案 2 :(得分:0)

我在.bashrc中使用这段代码

parse_git_branch() {
        git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ [\1\]/'
}
PS1="${debian_chroot:+($debian_chroot)}\u@\h:\w\[\033[1;36m\]\$(parse_git_branch)\[\033[0m\] $ "

结果是:

enter image description here

相关问题