【问题标题】:Problems for show branch in terminal终端中显示分支的问题
【发布时间】:2014-04-29 04:04:51
【问题描述】:

我的 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) $

【问题讨论】:

    标签: linux git shell terminal


    【解决方案1】:

    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'
    

    【讨论】:

      【解决方案2】:

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

      尝试延迟执行:

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

      【讨论】:

        【解决方案3】:

        我在我的 .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\] $ "
        

        结果是:

        【讨论】:

          猜你喜欢
          • 2020-02-26
          • 1970-01-01
          • 2021-12-05
          • 2019-02-10
          • 2018-03-04
          • 2016-02-16
          • 2018-05-31
          • 2020-01-02
          • 2010-11-13
          相关资源
          最近更新 更多