我是git的新手,我现在做的是将我最近的所有项目作为存储库上传到github。有很多不同的项目,比如网页设计、wordpress主题和不同类型的应用程序。其中一些也属于更大的项目,因为它们是作为不同的应用程序来测试一些东西。

问题是我现在有一个令人困惑的在线存储库的数量。我如何在一个文件夹结构组相关的github存储库?在github上是否有一个功能提供任何排序和结构甚至标签存储库的能力?


2021年12月更新:

列表现在可以作为公测版本使用

通过在GitHub上轻松组织和管理您最喜欢的存储库,列表提升了主演体验。 你可以在https://github.com/USERNAME?tab=stars的明星页面上创建公开列表。 除了企业管理的用户,所有人都可以使用列表。

然而(2022年6月),正如Wyck在GitHub社区Issue #4174:支持存储库类别中所说明的那样,表示仍然缺乏:

如果我点击主题按钮,它会显示所有标有相同主题关键字的公共回购列表。 相反,我更希望有一种方法只查看我的组织中标记有该主题的回购。 我还希望看到在我的私人组织内的任何回购上标记的所有主题的顶级列表,以作为我的组织中的回购的顶级目录或目录。


最初的回答:

在GitHub本身,你不能按“文件夹”分组你的回购,除非你创建组织。 例如,请参阅SublimeText,作为所有SublimeText包的集合。

但这将不支持嵌套文件夹组织。目前(2017年6月),它只支持嵌套的团队组织结构。


更新2020年8月:README项目允许您添加一个个人资料页…你可以以任何你想要的方式列出和组织你的存储库。但这是一个手动过程(编辑页面)。


2019年2月更新:你现在有了项目的概念: 参见“用户拥有的项目—您的个人工作区”

您还可以将多达5个存储库链接到您的项目板。链接存储库将限制搜索范围到那些链接存储库,因此您可以快速缩小尚未添加到项目委员会的任何新问题

GitHub现在也支持标签(以主题的形式)。


2012年的原始答案:

另一种解决方案是定义引用其他repo的存储库,声明为子模块。

这样,当您克隆一个称为“父repo”的repo(引用其他repo)时,它们将被克隆到自己的目录中,每个子模块都有一个子目录。

它不会在你的GitHub帐户本身(因为它仍然包含一个很大的回购列表,甚至更大的父回购),但通过克隆一个父回购,你将得到它所有相关的子模块。


AnneTheAgile在2014年的评论中提到的302问题现在只引用了(2018年11月)tbnorth/github_repo_tags

这个存储库中的小python程序使用GitHub API来获取你的回购列表。并将他们的名称、描述和URL添加到一个新的repo中。,默认名为repo_tags。最初每个“问题”都被标记为未分类,但您可以使用常规的问题标记来标记它们。 当重新运行时,repo_tags.py只会为repos创建问题。这些问题还没有被解决。


我使用组织来安排回购。这允许清晰的描述和清晰的组织,如果需要,可以进行共享。例如:

我的组织

Jmr-iOS (iOS回购) Jmr-Work(工作回购) 用户会计(人事及回购)

所有组织回购都是公共的,除非你升级到企业云帐户(25美元/月)。截至2020年9月,你可以在一个组织下拥有无限的公共/私有存储库。(见这里的选项)


这与其说是一个回答,不如说是一个提醒。

结构化利用组织的一个最近的副作用已经暴露出来,因为下面宣布为用户提供免费的私人回购:https://blog.github.com/2019-01-07-new-year-new-github/

组织私人回购仍然不是免费的。因此,使用组织来分离回购将导致你的组织无法利用免费的私人回购,如果这是你需要的。


模拟文件夹的一种可能方法是在repo描述的末尾附加逗号分隔的标记。然后你可以通过这些标签搜索repo,因为GitHub 'Find a repository…'过滤器看起来在回购描述!一个例子:

MyRepo:做一些很酷的事情[计算机视觉,机器学习,python]


对于初学者来说,你现在可以在GitHub中以主题的形式标记回购。耶!

但我不认为这能解决更大的问题。为此,我尝试了顶级文件夹系统(其中每个项目都是一个repo中的文件夹)。我还尝试过每个项目一个分支的系统(其中每个项目都在一个新的分支中)。最后一个方法允许你单独地拉和推每个项目!但是,这两种情况都不理想。

您还可以研究其他版本控制系统,如subversion和mercurial。如果你需要,Mercurial也可以托管在Bitbucket上,Facebook甚至正在寻求对“多项目存储库”的支持。

我个人喜欢https://hg.openjdk.java.net/(或http://hg.netbeans.org/)的系统,在那里你有一个文件夹设置,每个项目托管在端点上。实现这一点的最好方法是通过创建一个网站(你可以在GitHub中做)与你的项目结构(如https://mvnrepository.com/或https://www.npmjs.com/)。


项目方法的缺点包括:

项目(即“文件夹”)则不是回购所在的文件夹 通常可见,例如在主页或个人资料。要使这些地方可见,需要在回购的名称中添加手动标记,例如 比如@peter554。但是更改“文件夹”(即项目)需要 更改回购名称中的项目和手动标记。 不能向项目中添加分叉。

联合国的办法没有这些问题。然而:

您的“文件夹”回购将从您的帐户个人资料页面消失。但组织可以通过成为公众成员而在那里可见。(可以在组织内的“人员”下设置)

注意:随着Github的进一步发展,这些内容可能会发生变化。


所以确认Github没有文件夹功能。

我认为要组织存储库,可以采用两种方法。

to use a file system, each file refer to one repository, they are just a link to GitHub, put them inside the folder with folder names as the categories ( a python script could generate all files, and you drag and drop) cons: it assumes the structure is a tree, so one repo maximum have one parent( one category) code : https://gist.github.com/AronWaterAron/0e2af669f942c95306123b1fcd556126 organize using a directed graph ( no existing tool, you need to build a web or desktop app to do that, I am coding this out)


git repo和git repo表示它们所属业务域的服务。因此,团队拥有这些回购是有道理的。您可以创建一个团队,并添加该团队拥有的回购。使用团队的概念也可以更好地管理访问。

这个想法的灵感来自Team Topology