在Zsh的Git提示符下有额外的信息

时间:2009-07-14 19:22:52

标签: git zsh prompt

Torvalds似乎有the following prompt

[torvalds@g5 git]$ 

第一个词是用户名。 g5似乎是Git repo中的一个分支,而git表明它是Git中的一个分支。

我当前的提示

PROMPT="$"

你怎么能得到与Torvalds类似的提示?

6 个答案:

答案 0 :(得分:4)

实际上,我猜测g5是指他当前正在处理的机器的主机名,而git是当前的工作目录。格式[user@hostname dir]$是一个非常标准(即广泛使用)的shell提示符。

答案 1 :(得分:3)

Git's integration with Bash programmable completion提供了一个名为__git_ps1的函数。

如果您更改PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '(在.bashrc或其他某些交互式源文件中),并且不进行进一步的自定义,则您的提示将如下所示:

[user@host ~]$ cd /usr/src/linux
[user@host linux ((v2.6.30))]$

答案 2 :(得分:2)

如果你使用 zsh (而不是更受欢迎的bash),请查看Xana Yammering关于使用Frank Terbeck为zsh开发的vcs_info子系统的VCS info in prompts博客文章,Git的后端。

答案 3 :(得分:1)

就像ephemient所说,你会想要Git bash script installed,安装说明就在文件顶部附近。您可能还想查看Github guide page。值得注意的一点是,如果你在git目录中,分支只会出现。例如,这是我的正常提示符:blaenk@macbook:~ $,当我在git目录中时,提示符如下所示:blaenk@macbook:~/code/iphone/DIFM (master*)$

如果仔细观察,它显示分支的部分master就会有一个星号。这表示存在未经分级的更改;如果进行了更改,它将显示+。这可能非常有用。为此,您基本上必须将GIT_PS1_SHOWSTASHSTATE设置为非空状态。例如,在您的~/.bashrc~/.bash_profile中,请输入以下内容:

export GIT_PS1_SHOWDIRTYSTATE=true

现在,当您转到git目录时,您应该看到指示符是否存在任何未暂停的更改或是否存在任何暂存更改。您可以通过编辑文件来快速测试。星号应该出现。然后,您可以通过执行以下操作将文件恢复到其原始状态:

git checkout -- the/file.txt

顺便说一下,自动完成bash脚本也非常棒。您最终可以执行“git chec”之类的操作,然后按TAB键,然后它会自动完成以结帐,例如,您也可以自动完成分支名称。

您最有可能感兴趣的其他一些资源如下,它们将指导您按照您希望的方式塑造提示,并且如果您愿意,可以为某些部分添加颜色,这可以带来很多更具可读性和信息量的提示。尽量不要过度。

答案 4 :(得分:0)

在搜索过程中遇到了这个问题。只是想为此分享一个更新的解决方案。

Liquid Prompt允许对zsh提示进行许多自定义,包括显示git分支和git存储库的不同状态的各种颜色。

答案 5 :(得分:-1)

我得到以下最终的工作

 function get_git_branch { 
   git branch | awk '/^\*/ { print $2 }
 }
 function get_git_dirty { 
   git diff --quiet || echo '*'
 }
 function get_git_prompt { 
   git branch &> /dev/null || return 1 
   echo "($(get_git_branch)$(get_git_dirty)) "
 }
 PROMPT="$(get_git_prompt)\$ "

Source