2017-12-18 444 views
-1

我试图做一个小工具(也许它已经存在)来帮助从终端处理存储库和分支。在终端提示符当前git分支

基本上这个想法是在提示符下输入分支的名称(类似于虚拟环境,它也显示提示中的当前环境)。

下面的命令只是提取分公司目前我在名字。

git branch | grep "*" | cut -c3- 

包括这在我的.bashrc文件修改PS1作品,但只有当控制台打开时改变了提示。

我想在每次更改文件夹cd my_folder,cd ..时更新提示,所以如果我转到另一个存储库,它会更新分支。

所以我为cd创建了一个别名,它在执行cd之后现在追加了这个小脚本。

但是,如果我使用git更改分支,因为我没有更改文件夹,提示未立即更新。

我也可以为git创建一个别名,但我的印象是我改变了太多的东西,也许这是已经存在的东西。

为避免重新发明轮子,这是否已经存在?使用它是一个好主意吗?

谢谢

+2

有许多shell框架可以做到这一点。请在https://github.com/robbyrussell/oh-my-zsh,https://github.com/sorin-ionescu/prezto等找到实例。 –

回答

0

将此代码添加到〜/ .bashrc。添加完后不要忘记使用source命令。

parse_git_branch() { 
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' 
} 
export PS1="\[email protected]\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ " 

希望这可能有所帮助。

0

首先是检查你是否在一个Git仓库,然后用符号-REF命令解压:

function gitbranch 
{ 
    if git rev-parse --git-dir &>/dev/null; then 
     printf "%s" "[$(git symbolic-ref HEAD --short)]" 
    fi 
} 
export PS1="\[email protected]\h \[\033[32m\]\w\[\033[33m\]\$(gitbranch)\[\033[00m\] $ " 

将它添加到你的.bashrc文件。