git 检查工作副本存储库是否存在并验证它
git check if working copy repository exists and validate it
我正在寻找一种方法来测试 local 目录是否存在 git 存储库。
我不会就像只是通过 sh/bash 检查 .git
子目录是否存在,而是使用专用的 git 命令,如果有的话。
我想通过 git 命令验证在 local 目录中可能找到的 git 存储库。
你知道任何git命令吗?
对于项目 1,使用 git rev-parse --is-inside-work-tree
。这个:
- 如果您在 Git 存储库中但不在其工作树中(即在裸存储库中),则打印
false
;
- 如果您在具有工作树的 Git 存储库中,则打印
true
;或
- 错误(打印
fatal: not a git repository (or any parent up to...
到 stderr)如果你不在 Git 存储库中。
但是请注意,如果您所在的 Git 存储库的工作树已损坏或以某种方式被修改,Git 将在此处打印 true
。如果你传递 --git-dir=
和有效存储库的路径,Git 总是 认为你在工作树中(因为你是)。如果打印出 true
或 false
,则此命令的退出状态为零,如果产生错误,则退出状态为非零。
对于第 2 项——"validating" 存储库——这完全取决于你所说的 "validate"。
我正在寻找一种方法来测试 local 目录是否存在 git 存储库。
我不会就像只是通过 sh/bash 检查.git
子目录是否存在,而是使用专用的 git 命令,如果有的话。我想通过 git 命令验证在 local 目录中可能找到的 git 存储库。
你知道任何git命令吗?
对于项目 1,使用 git rev-parse --is-inside-work-tree
。这个:
- 如果您在 Git 存储库中但不在其工作树中(即在裸存储库中),则打印
false
; - 如果您在具有工作树的 Git 存储库中,则打印
true
;或 - 错误(打印
fatal: not a git repository (or any parent up to...
到 stderr)如果你不在 Git 存储库中。
但是请注意,如果您所在的 Git 存储库的工作树已损坏或以某种方式被修改,Git 将在此处打印 true
。如果你传递 --git-dir=
和有效存储库的路径,Git 总是 认为你在工作树中(因为你是)。如果打印出 true
或 false
,则此命令的退出状态为零,如果产生错误,则退出状态为非零。
对于第 2 项——"validating" 存储库——这完全取决于你所说的 "validate"。