我可以使用完整的目录路径来确定给定目录是否是git存储库的shell命令是什么?具体来说,我希望能够在不在目录中的情况下执行此操作,而无需cd进入它。我也希望能够通过一个返回简单" true"的命令来做到这一点。或"假" (就像rev-parse --is-inside-work-tree那样),但它不是必需的。
答案 0 :(得分:26)
使用git -C <path> rev-parse
。如果<path>
上的目录是git存储库,则返回0,否则返回错误代码。
答案 1 :(得分:2)
系统中的任何目录都可以是git工作副本。通过将.git
和GIT_DIR
环境变量设置为指向实际GIT_WORK_TREE
目录和工作副本的根目录,可以将目录用作包含.git
子目录的目录,或使用--git-dir
和--work-tree
选项。有关详细信息,请参阅git man page。
答案 2 :(得分:1)
我们也可以尝试0.74
命令,如果输出如下:
git status
然后,该目录不是git存储库。
答案 3 :(得分:0)
在@Walk的评论中,
git status
如果不是回购协议,将引发致命消息。
echo $?
将有助于捕获其错误与否。
如果它是git repo,则echo $?
将为0,否则值为128