1

对于我的学校项目,我习惯于拥有一个大型 repo,其中包含特定项目的多个子目录。因为我没有时间,我总是向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>
4

1 回答 1

1

您正在寻找git filter-branch使用该--subdirectory-filter选项。

为你想要的三个项目创建三个分支,然后git filter-branch --subdirectory-filter projectX在这些分支中运行应该会给你想要的结果。

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

于 2010-10-06T05:46:07.587 回答