我已按照该问题中接受的答案中给出的步骤进行操作 -在终端中预先添加当前 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)/" )
}