zsh:检查我当前是否在我的 git 存储库中(git check-ignore)

zsh:检查我当前是否在我的 git 存储库中(git check-ignore)

在我的 中.zshrc,我使用以下 git 命令(来自zsh 提示:检查是否在 git 存储库内且未被 git 忽略)来检查我是否在 git 存储库中,以便我可以相应地更改提示:

git check-ignore -q . 2>/dev/null
if [[ $? -eq 1 ]] ; then

但这个命令并不能区分我是否拥有这个存储库。这可能由系统上的其他用户拥有,但我没有写入权限。

是否可以检查我是否拥有该.git目录或是否有写权限?

答案1

想必您关心.git目录本身的写权限;如果是这样,

git check-ignore -q . 2>/dev/null
if [[ $? -eq 1 && -w "$(git rev-parse --show-toplevel)/.git" ]]; then

then仅当当前目录是 git 存储库中不可忽略的目录并且相关.git目录对于当前用户可写时才会运行该块。

git rev-parse也可以用作 git 存储库内部的测试;所以如果你不关心 git 存储库中被忽略的目录,

if top="$(git rev-parse --show-toplevel 2>/dev/null)" && [ -w "$top/.git" ]; then

将确定当前工作空间的.git目录(如果有)是否可写。

另请参阅[ -O "$top/.git" ]检查您是否自己的test该目录(不是标准的,但大多数s / shell都支持,包括zsh

相关内容