2011-02-24 85 views
10

我在我的系统上有几个git仓库,我想在终端列出它们。有没有办法在终端中列出git仓库?

我要找的是这样的:

/路径/到/我/的git /回购/ 1/REPONAME1
/路径/到/我/的git /回购/ 2/REPONAME2
/path/to/my/git/repo/3/REPONAME3

如果你能想出如何显示分支名称和回购的状态,例如。 [master] c:0 u:1 d:0,那会很棒。

+2

这是一个有点类似于http://stackoverflow.com/questions/2765253/git-status-across-multiple-repositories-on-a-mac在这里你还可以找到有用的想法。 – VonC 2011-02-24 07:35:03

+0

是的,它确实帮了我很大忙。谢谢你指出。 – studiomohawk 2011-02-25 01:48:30

回答

7

要列出您的系统上的所有git存储库,可以在bash shell终端(在命令行)运行以下命令并找到它们。

find/-name .git -type d -exec dirname {} \; 
+0

这是一个合理的第一个近似值,但错过了很多。裸仓库将被丢失,任何使用名为.git的常规文件的仓库都会指定一个git目录。 – 2011-02-24 14:34:34

+0

*'C:\ XAMPP \ htdocs中\ rimedit>''找到/ -name git的-type d -exec目录名称{} \'' “C:/用户/的Jakub /应用程序数据/本地/ GitHub的/ PortableGit_fed20eba68b3e238e49a47cdfed0a45 783d93651 /bin/find.exe“:'**'缺少参数到'-exec'' ** – 2014-01-13 15:02:26

2

lsgit是这样做的脚本。它本质上是一个围绕locate -br '^HEAD$'的包装。

如果在本地机器上存在多个相同回购商的克隆,则表明这些回购商品是相关的。

5

我发现这比find命令更准确,速度更快。我相信它可以改善,但这是一个好的开始。很明显,在运行此命令之前,您的文件数据库将需要更新。在Linux系统上,您可以通过运行'updatedb'来完成此操作。

locate -br '\.git$' | rev | cut -c 6- | rev 
相关问题