当当前目录有 .git 文件夹时,我可以在提示中显示 GIT 吗?

dja*_*fan 5 bash prompt git

我可以在提示显示GIT时,当前目录有/包含一个.git文件夹?有没有办法做到这一点?我当前的提示定义如下:

export PS1="[\u@\h] \w $ "
Run Code Online (Sandbox Code Playgroud)

所以,我的提示是这样的:

[user@computer] ~/workspace  $
Run Code Online (Sandbox Code Playgroud)

我希望它动态地看起来像这样:

[user@computer] ~/workspace GIT $
Run Code Online (Sandbox Code Playgroud)

Jak*_*uje 11

最标准的方式是__git_ps1直接从 git 中使用。在 Ubuntu 中,它在以下路径中可用:

source /usr/lib/git-core/git-sh-prompt
## source /etc/bash_completion.d/git-prompt
#PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w $(__git_ps1 "(%s)")\$ '
Run Code Online (Sandbox Code Playgroud)

您可以注意到添加的部分$(__git_ps1 "(%s)"),它会通知您有关 repo 的当前状态——当前分支、正在进行的 rebases、合并等。

Ubuntu 中的文件由git包提供:

$ dpkg-query -S /usr/lib/git-core/git-sh-prompt
git: /usr/lib/git-core/git-sh-prompt
Run Code Online (Sandbox Code Playgroud)

对于 Fedora by git-core(路径略有不同):

rpm -qf /usr/share/git-core/contrib/completion/git-prompt.sh
git-core-2.5.5-1.fc23.x86_64
Run Code Online (Sandbox Code Playgroud)

您的提示将从

[user@computer] ~/workspace $ 
Run Code Online (Sandbox Code Playgroud)

[user@computer] ~/workspace (master)$ 
Run Code Online (Sandbox Code Playgroud)