Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何使用bash脚本检查目录中是否存在git存储库_Linux_Git_Bash - Fatal编程技术网

Linux 如何使用bash脚本检查目录中是否存在git存储库

Linux 如何使用bash脚本检查目录中是否存在git存储库,linux,git,bash,Linux,Git,Bash,我正试图在我的项目上与git合作 我想设置终端,以便每当我将cd刻录到包含git项目的目录中时,终端应该指示我当前所在的git分支 如果有git项目,终端只显示分支的名称, 比如说 (master) $ 否则它应该显示当前目录路径 username@machinename:path/to/directory $ 我发现一个类似的问题得到了回答,但我不知道如何修改答案以满足我的需要,因为我不擅长bash脚本。 如果您有任何建议,我们将不胜感激。请查看此项目,它将解决您的整个问题,如果没有,您可

我正试图在我的项目上与git合作

我想设置终端,以便每当我将cd刻录到包含git项目的目录中时,终端应该指示我当前所在的git分支

如果有git项目,终端只显示分支的名称, 比如说

(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)")]\$ '