我如何找到所有git存储库,包括裸存储库?

时间:2016-12-18 20:00:44

标签: git

通常在查找git存储库时,我会查找.git目录,但这并不总是有效。子模块工作项有一个.git文件,子模块并不总是被检出,子模块库(和裸存储库)可以在任何地方。

我想找到从github克隆的每个存储库,但是找到每个存储库都很难。是否有命令或oneliner这样做?

1 个答案:

答案 0 :(得分:1)

最小的git存储库包含两个文件HEADconfig,以及两个文件 目录,objectsrefs

因此,您可以告诉find查找符合这些条件的目录。 HEAD是一个非常不寻常的名字,让我们来看看:

# find all repositories
find -name HEAD -execdir \
    [ -d refs -a -d objects -a -f config ] \; \
    -printf %h\\n   # or if your `find` doesn't have `-printf`, just `-print`

会做的。这找到了存储库,而不是它的工作树;找工作区, 找到.git仍然是最好的方式

find -name .git

或如果尾随.git令人讨厌

find -name .git -printf %h\\n