在 ubuntu 终端中显示当前分支名称

在 ubuntu 终端中显示当前分支名称

我已按照该问题中接受的答案中给出的步骤进行操作 -在终端中预先添加当前 git 分支。但即使在添加以下代码.bashrc并重新启动笔记本电脑后,我也没有在终端中看到分支名称。我遗漏了什么吗?我是否必须以某种方式在代码中指定 repo 根文件夹的名称?

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

答案1

git branch仅当当前工作目录是您想要跟踪的存储库时才会报告。

例如:

$> pwd
/home/xieerqi
$> git branch
fatal: Not a git repository (or any of the parent directories): .git
$> cd sergrep
$> git branch
* master

您想添加cd对该函数的调用,以便导航到该目录。更好的方法是,将该命令括在括号中,以便该命令在子 shell 中执行,这样您当前的工作目录就不会受到影响。对我来说,该函数可以这样写:

parse_git_branch(){
  # navigate in sub shell to my git repository
  # and execute git branch
  ( cd /home/xieerqi/sergrep; git branch 2> /dev/null | \
   sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/' )
}

其具体运作方式如下:

DIR:/xieerqi|14:24|skolodya@ubuntu:
$ source ~/.mkshrc                                                             
DIR:/xieerqi|14:24|skolodya@ubuntu:
$ PS1="$(parse_git_branch)$PS1"                                                
(master)DIR:/xieerqi|14:24|skolodya@ubuntu:
$ echo HELLO ASKUBUNTU
HELLO ASKUBUNTU
(master)DIR:/xieerqi|14:24|skolodya@ubuntu:
$ 
(master)DIR:/xieerqi|14:24|skolodya@ubuntu:
$ typeset -f parse_git_branch
parse_git_branch() {
    ( cd /home/xieerqi/sergrep 
      git branch 2>/dev/null | sed -e "/^[^*]/d" -e "s/* \\(.*\\)/(\\1)/" ) 
} 

相关内容