如何自动将提交拆分为不同的分支?

时间:2010-10-06 05:41:54

标签: git scripting branch split git-branch

对于我的学校项目,我曾经有一个大型仓库,有几个子目录用于特定项目。因为我没有时间,所以我总是将任何内容提交到master分支。

问题是,这变得不可行,因为恢复旧提交或确定哪些提交属于不读取消息的内容变得越来越困难。

目前它看起来像这样:

风向树:

projects/
  projectA/
  projectB/
  projectC/
  ...

回购:

A---B---C---D---E---F---G<master>

我发现,几乎所有提交(除了大约五个,我可以手动修复)只修改其中一个文件夹中的文件。

是否有一种简单的(自动?)方式(脚本?)可以自动将提交分配给项目并创建不同的分支?我想在最后得到这样的东西:

回购:

A---C---G<project A>
|\
| \
|  \
|   B---D<project B>
E---F<project C>

1 个答案:

答案 0 :(得分:1)

您正在使用git filter-branch选项查找--subdirectory-filter

为您想要的三个项目创建三个分支,然后在这些分支中运行git filter-branch --subdirectory-filter projectX,可以获得所需的结果。

您可能还想考虑每个项目只使用一个存储库。完成上述操作后,创建新的存储库,每个存储库包含您之前创建的其中一个分支作为其主服务器,将是微不足道的。