有没有办法使用 git 列出所有现有的存储库?

有没有办法使用 git 列出所有现有的存储库?

为了克隆 git 存储库,必须知道存储库的名称。使用多个存储库时,很难记住所有不同的名称,所以现在我想知道是否可以使用某些 git 命令列出远程服务器上所有现有的存储库。

答案1

你要么需要 Shell 访问托管 git-daemon 的机器并查看用于调用 git-daemon 的参数,要么使用名为GitWeb

另请参阅现有的问题

还有另一种方法,但需要贵公司服务器管理员的帮助。Git 具有一个可浏览的 Web 前端,称为“GitWeb”,可配置为显示 git 提供的所有项目。

GitWeb README 中解释了详细信息 - 感兴趣的配置键名为“GITWEB_PROJECTROOT”:

GITWEB_PROJECTROOT The root directory for all projects shown by gitweb. Must be set correctly for gitweb to find repositories to display. See also "Gitweb repositories" in the INSTALL file for gitweb.

也许您可以与您的管理员谈谈 - gitweb 可以为所有开发人员带来巨大的利益。

据我所知,这需要在运行 git-daemon 的机器上完成。您要么需要检查调用 git-daemon 的参数,要么可能检查 /etc/inetd.conf

答案2

这在很大程度上取决于如何访问这些存储库,因此实际上没有一个简单的万能答案:

  • git-daemon如果存储库由和/或提供服务gitweb,您可以查看配置以查看其保存存储库的位置并列出该目录的内容。
  • 如果通过 ssh 访问存储库,则它们可以位于文件系统的任何位置。您应该能够通过查找系统上包含名为HEAD(例如locate HEAD | grep \/HEAD$)的文件的所有目录来找到它们,但这可能会产生误报,并且它还会显示任何仅是本地工作目录且未共享或从其他来源克隆的存储库。
  • 如果存储库由GitLab,它们根本不在文件系统中,因此您需要使用 gitlab 网页界面来列出它们。请注意,如果您没有权限访问某些存储库,它们可能会从此列表中隐藏。

答案3

由于我具有远程机器的 shell 访问权限,所以我编写了一个小fabric脚本,可以从终端运行该脚本来列出所有远程存储库:

#!/bin/python

from fabric.api import run, env
from fabric.colors import green 

env.hosts = ['<hostname>'];
env.user = '<user>';
env.password = '<password>';

def lr():
  "Lists all remote repositories"
  print(green("listing remote repos"))
  run('cd /var/git; ls -al')

我现在可以通过从终端发出以下命令来列出所有远程存储库:

fab lr

答案4

为了你的Git,最简单(最肮脏)的方式是在中创建别名.bashrc

alias gitlist="echo 'repository1 repository2 repository3'"   # show your git lists of repository1, 2, 3

然后另一个别名快速转到您电脑中的repository1:

alias repository1='cd /c/Users/Your_Location_of_repository1'

相关内容