从子文件夹中Git多个子项目?

时间:2010-07-14 13:19:41

标签: git github

我有多个项目,我想把它放到GitHub.com上。所有这些项目都在我当地的Git存储库中。我只有一个存储库,但是对于每个项目,我想要有一个GitHub项目。这样,项目就可以组织错误。

如何设置它以便管理起来并不困难?我是否需要重做我的存储库布局并在本地为每个项目创建新的git存储库?那将是真正的时间,我可能会失去Git的历史。

沃尔特

2 个答案:

答案 0 :(得分:15)

根据您的回购的组织方式,您可以使用git filter-branch为每个项目创建新的回购,仅保留每个项目 的历史记录。

假设您当前的回购结构是这样的:

repo/
  project1/
    project1-file
  project2/
    project2-file
  project3/
    project3-file

您可以先克隆您的仓库(git filter-branch 删除文件其历史记录,因此请克隆原始仓库第一)。然后,在您的克隆仓库中,您可以使用git filter-branchproject1的根目录下创建一个新的仓库(包含所有旧历史记录):

$ git filter-branch --subdirectory-filter project1 HEAD

现在,您的回购将如下所示:

repo/
  project1-file

它仍将包含旧存储库中project1/下存储的所有文件的历史记录。

对每个项目重复该步骤,您现在将拥有三个独立的回购,其中包含相关项目的所有历史记录。

答案 1 :(得分:5)

如果我理解这个问题,你就有一个包含许多项目的大型回购。您希望将每个项目分解为单个回购而不会丢失历史记录。底线是肯定的,你必须重做你的存储库布局并为每个项目创建新的git存储库。但是,你不需要失去历史。

  1. 制作当前仓库的副本,每个子项目一份。
  2. 在每个新的repos中,删除除与该repo关联的项目之外的所有其他项目。
  3. 在破坏原始仓库之前,您仍然拥有所有历史记录,但现在每个项目都是自己的仓库。

    如果您不介意丢失历史记录,那么将每个项目放入其自己的git repo就像在项目目录中运行git init一样简单。这将为该项目创建一个新的仓库。