我有多个项目,我想把它放到GitHub.com上。所有这些项目都在我当地的Git存储库中。我只有一个存储库,但是对于每个项目,我想要有一个GitHub项目。这样,项目就可以组织错误。
如何设置它以便管理起来并不困难?我是否需要重做我的存储库布局并在本地为每个项目创建新的git存储库?那将是真正的时间,我可能会失去Git的历史。
沃尔特
答案 0 :(得分:15)
根据您的回购的组织方式,您可以使用git filter-branch
为每个项目创建新的回购,仅保留每个项目 的历史记录。
假设您当前的回购结构是这样的:
repo/
project1/
project1-file
project2/
project2-file
project3/
project3-file
您可以先克隆您的仓库(git filter-branch
将删除文件和其历史记录,因此请克隆原始仓库第一)。然后,在您的克隆仓库中,您可以使用git filter-branch
在project1
的根目录下创建一个新的仓库(包含所有旧历史记录):
$ git filter-branch --subdirectory-filter project1 HEAD
现在,您的回购将如下所示:
repo/
project1-file
它仍将包含旧存储库中project1/
下存储的所有文件的历史记录。
对每个项目重复该步骤,您现在将拥有三个独立的回购,其中包含相关项目的所有历史记录。
答案 1 :(得分:5)
如果我理解这个问题,你就有一个包含许多项目的大型回购。您希望将每个项目分解为单个回购而不会丢失历史记录。底线是肯定的,你必须重做你的存储库布局并为每个项目创建新的git存储库。但是,你不需要失去历史。
在破坏原始仓库之前,您仍然拥有所有历史记录,但现在每个项目都是自己的仓库。
如果您不介意丢失历史记录,那么将每个项目放入其自己的git repo就像在项目目录中运行git init
一样简单。这将为该项目创建一个新的仓库。