Bash 检查文件是否存在于路径中的任何目录中,或者当前目录是否在git项目中

Bash 检查文件是否存在于路径中的任何目录中,或者当前目录是否在git项目中,bash,git,shell,zsh,Bash,Git,Shell,Zsh,我正在为我的.zshrc文件添加一个短命令,该命令将调用清除、ls和git状态。仅当当前目录是git项目的一部分时,才应调用git status命令 到目前为止,我有一个可以工作的版本,但是只有当.git文件实际上在当前目录中,所以只有在项目的根目录中。看起来是这样的: alias cl="clear && ls && if [ -e .git ] then git status fi" 我想知道是否有一种方法可以检查当前目录的任何父目录中是否有.git

我正在为我的
.zshrc
文件添加一个短命令,该命令将调用
清除
ls
git状态
。仅当当前目录是git项目的一部分时,才应调用
git status
命令

到目前为止,我有一个可以工作的版本,但是只有当
.git
文件实际上在当前目录中,所以只有在项目的根目录中。看起来是这样的:

alias cl="clear && ls && if [ -e .git ]
then
    git status
fi"
我想知道是否有一种方法可以检查当前目录的任何父目录中是否有
.git
文件,或者是否有其他方法来实现这一点


谢谢

您不需要检查是否存在
.git
目录。Git已经为你做了这件事。如果您想知道当前目录是否是git存储库的一部分,只需运行:

git rev-parse --is-inside-work-tree
退出代码将告诉您是否在属于git存储库的目录中。这使您的别名看起来像:

alias cl="clear && ls && if git rev-parse --is-inside-work-tree 2> /dev/null
then
  git status
fi" 

您不需要检查是否存在
.git
目录。Git已经为你做了这件事。如果您想知道当前目录是否是git存储库的一部分,只需运行:

git rev-parse --is-inside-work-tree
退出代码将告诉您是否在属于git存储库的目录中。这使您的别名看起来像:

alias cl="clear && ls && if git rev-parse --is-inside-work-tree 2> /dev/null
then
  git status
fi" 

我要指出的是,它作为一个函数而不是别名更具可读性,并且将以相同的方式调用。我要指出,它作为一个函数而不是别名更具可读性,并且将以相同的方式调用。