【发布时间】:2010-11-10 18:39:48
【问题描述】:
Torvalds 似乎有the following prompt。
[torvalds@g5 git]$
第一个单词是用户名。 g5 似乎是 Git repo 中的一个分支,而git 表明它是 Git 中的一个分支。
我当前的提示
PROMPT="$"
你怎么会有和 Torvalds 类似的提示?
【问题讨论】:
Torvalds 似乎有the following prompt。
[torvalds@g5 git]$
第一个单词是用户名。 g5 似乎是 Git repo 中的一个分支,而git 表明它是 Git 中的一个分支。
我当前的提示
PROMPT="$"
你怎么会有和 Torvalds 类似的提示?
【问题讨论】:
其实我猜g5指的是他当前工作的机器的主机名,git是当前工作目录。 [user@hostname dir]$ 格式是一个非常标准的(即广泛使用的)shell 提示符。
【讨论】:
Git's integration with Bash programmable completion 提供了一个名为__git_ps1 的函数。
如果您更改您的PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '(在您的.bashrc 或其他一些交互式源文件中),并且不做进一步的自定义,您的提示将如下所示:
【讨论】:
就像 ehemient 说的,你会想要那个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,它会自动完成结帐,您也可以自动完成分支名称。
您最有可能感兴趣的其他一些资源如下,它们将指导您完成按您想要的方式塑造提示的过程,如果您愿意,还可以为某些部分添加颜色,这可以大大提高更具可读性和信息性的提示。尽量不要过度。
【讨论】:
如果您使用 zsh(而不是更流行的 bash),请查看 Xana Yammering 的 VCS info in prompts 博客文章,了解使用 Frank Terbeck 为 zsh 开发的 vcs_info 子系统,后端用于吉特。
【讨论】:
我终于得到了以下工作
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)\$ "
【讨论】:
git branch获取当前分支名称,它是瓷器:使用git symbolic-ref HEAD。
在搜索过程中遇到了这个问题。只是想为此分享一个更新的解决方案。
Liquid Prompt 允许对 zsh 提示进行许多自定义,包括显示 git 分支和针对 git 存储库的不同状态的各种颜色。
【讨论】: