Linux 如何使用bash脚本检查目录中是否存在git存储库
我正试图在我的项目上与git合作 我想设置终端,以便每当我将cd刻录到包含git项目的目录中时,终端应该指示我当前所在的git分支 如果有git项目,终端只显示分支的名称, 比如说Linux 如何使用bash脚本检查目录中是否存在git存储库,linux,git,bash,Linux,Git,Bash,我正试图在我的项目上与git合作 我想设置终端,以便每当我将cd刻录到包含git项目的目录中时,终端应该指示我当前所在的git分支 如果有git项目,终端只显示分支的名称, 比如说 (master) $ 否则它应该显示当前目录路径 username@machinename:path/to/directory $ 我发现一个类似的问题得到了回答,但我不知道如何修改答案以满足我的需要,因为我不擅长bash脚本。 如果您有任何建议,我们将不胜感激。请查看此项目,它将解决您的整个问题,如果没有,您可
(master) $
否则它应该显示当前目录路径
username@machinename:path/to/directory $
我发现一个类似的问题得到了回答,但我不知道如何修改答案以满足我的需要,因为我不擅长bash脚本。
如果您有任何建议,我们将不胜感激。请查看此项目,它将解决您的整个问题,如果没有,您可以更改它以满足您的需要。主逻辑在prompt.sh中 要在目录中查找当前git分支名称,您可以始终运行
git rev-parse --abbrev-ref HEAD
它将返回分支名称,在分离时返回头,或者当目录不是Git存储库的PAL时没有。如果您只需要这些信息,可以更新.bashrc。编辑变量PS1,它是bash提示符格式
PS1='(`git rev-parse --abbrev-ref HEAD 2> /dev/null`) \$ '
这是如何在提示符中的任意位置显示分支名称的示例。git脚本将帮助您识别是显示分支还是目录。它将更新您的PROMPT_命令,每次显示bash提示行时都会调用该命令,方法是检查git分支名称,然后在PS1中将其用作变量。然后,您可以将现有PS1='${debian\u chroot:+$debian\u chroot}\u@\h:\w\$'更新为
你有很多工具可以做到这一点 例如myzsh,或者只是添加到bashrc中的simplt bash 例如:
function parse_git_branch () {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
RED="\[\033[0;31m\]"
YELLOW="\[\033[0;33m\]"
GREEN="\[\033[0;32m\]"
NO_COLOR="\[\033[0m\]"
PS1="$GREEN\u@\h$NO_COLOR:\w$YELLOW\$(parse_git_branch)$NO_COLOR\$ "
Linux中的Git包通常附带一个可用于查看存储库状态的。要启用它,请在shell启动文件(例如~/.bashrc)中生成git-prompt.sh脚本,然后使用%s参数设置自定义提示。例如,在ArchLinux中,您可以执行以下操作:
[ -r /usr/share/git/completion/git-prompt.sh ] && . /usr/share/git/completion/git-prompt.sh
PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
当更改为Git存储库的目录时,提示符将更改为显示分支名称。额外的详细信息可以设置为通过提示显示,请参见上面的链接。谢谢,我发现该项目非常有用。虽然这可能会回答问题,但最好在此处提供实际信息,而不仅仅是链接。请添加一些关于如何工作以及如何使用它的信息。
[ -r /usr/share/git/completion/git-prompt.sh ] && . /usr/share/git/completion/git-prompt.sh
PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '