通常在查找git存储库时,我会查找.git
目录,但这并不总是有效。子模块工作项有一个.git
文件,子模块并不总是被检出,子模块库(和裸存储库)可以在任何地方。
我想找到从github克隆的每个存储库,但是找到每个存储库都很难。是否有命令或oneliner这样做?
答案 0 :(得分:1)
最小的git存储库包含两个文件HEAD
和config
,以及两个文件
目录,objects
和refs
。
因此,您可以告诉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