2016-09-15 126 views
11

什么是我可以使用的shell命令,使用完整的目录路径,确定给定的目录是否是git存储库?具体来说,我希望能够做到这一点,而不必在目录中,并且不必进入它。我也希望能够用一个返回简单的“true”或“false”的命令来做到这一点(很像rev-parse -is-inside-work-tree的做法),但这不是必需的。检查目录是否是git存储库(不必cd到它)

+3

'test -d“$ path/.git”' – Siguza

+2

还有'[[-d“$ PATH/.git”]] && <其他命令>' – hjpotter92

+0

您可以grep for .git文件夹?或者你可以进入它然后检查然后cd回到当前的工作目录? – J0B

回答

21

使用git -C <path> rev-parse。如果<path>的目录是git存储库,则返回0,否则返回错误代码。

+3

注意:这对于git仓库的任何子目录也会返回0。 – Siguza

+0

太棒了!谢谢!! – Ataraxia

2

系统中的任何目录都可以是git工作副本。通过将环境变量设置为指向实际的.git目录和工作副本的根目录,或者使用--git-dir--work-tree选项,您可以使用目录,就像它包含.git子目录一样。有关更多详细信息,请参阅git man page

0

我们也可以尝试git status命令,如果输出是这样的:

fatal: Not a git repository (or any of the parent directories): .git

然后,目录不是一个Git仓库。