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"
我要指出的是,它作为一个函数而不是别名更具可读性,并且将以相同的方式调用。我要指出,它作为一个函数而不是别名更具可读性,并且将以相同的方式调用。