有没有办法可以看到我机器上存在的所有git存储库?任何命令?
答案 0 :(得分:82)
如果你在Linux find / -name ".git"
,否则没有办法,它们是标准目录,只需使用你的OS文件/文件夹查找程序来查找.git
命名文件夹。
答案 1 :(得分:31)
这在Windows Powershell中非常有效:
Get-ChildItem . -Attributes Directory,Directory+Hidden -ErrorAction SilentlyContinue -Include ".git" -Recurse
答案 2 :(得分:11)
在* nix上,这也会找到任何--bare
个存储库。
find / -name "*.git" -type d
答案 3 :(得分:6)
Git存储库都有HEAD
,refs
,objects
和config
条目。
on GNU / anything,
find -name HEAD -execdir test -e refs -a -e objects -a -e config \; -printf %h\\n
检查.git
只会遗漏许多裸回购和所有子模块。
答案 4 :(得分:3)
在Linux上,更快的方法是:
locate -r "\.git$"
假设您使用sudo updatedb
答案 5 :(得分:2)
在Linux上,使用root权限尝试此命令:
find / | grep \\.git$
这只搜索以.git结尾的每个文件...你可以使用Windows,Linux等搜索工具来完成...
答案 6 :(得分:1)
在Linux和OS X上,当.git
的根目录为find
时,以下命令可能是最快的(忽略没有/
的存储库):
find / -name .git -exec dirname {} \; -prune
但是对于下面主要存储库的根,以下可能是最快的(您可能希望用/
或其他根替换.
):
find / -type d -exec test -d {}/.git \; -prune -print
使用find
的 primaries 的快速解释(因为此处没有运算符,-and
是隐式的,即每个访问过的节点 primaries 从左到右进行评估,直到其中一个评估为false
):
-name
为true
(通常,但不在此处,使用通配符)-exec
执行由;
终止的命令(由\
转义以避免由shell解释),如果返回状态为{{,则为true
1}}(即好)。当前节点可用0
(不需要转义){}
始终为-prune
,并导致所有子节点被跳过true
为-type d
true
是必需的,因为如果-print
存在,则不会隐式附加答案 7 :(得分:1)
一个简单的PowerShell版本:
Get-ChildItem . -Recurse -Hidden .git
答案 8 :(得分:1)
与埃里克·伯卡姆(Eric Burcham)的回答略有不同。该答案以\ .git结尾,但不是。
Get-ChildItem . -Attributes Directory+Hidden -ErrorAction SilentlyContinue -Filter ".git" -Recurse | % { Write-Host $_.Parent.FullName }
我在一天开始时使用此命令。它只是在上面添加了一些git命令。出于某种原因,如果一个人先运行一次提取然后再进行提取(不知道为什么),那么我们的git存储库将发挥最佳作用。由于某种原因,我们有很多子模块。无论如何,请将您需要的内容放在{}之间。
push-location; Get-ChildItem . -Attributes Directory+Hidden -ErrorAction SilentlyContinue -Filter ".git" -Recurse | % { cd $_.parent.fullname; write-host '*************'; $(get-location).path; git fetch; git pull; git checkout .; git clean -f; git submodule update; git status; write-host '*************'; write-host ' '; }; pop-location
答案 9 :(得分:0)
对于Linux:
dir="/home/${USER}"
dir_not="${dir}/miniconda3"
find /home/aeug -type d -iname ".git" -o -path "${dir_not}" -prune | xargs -0 echo