【问题标题】:How to split commits automatically into different branches?如何将提交自动拆分到不同的分支?
【发布时间】:2011-04-21 15:35:33
【问题描述】:

对于我的学校项目,我习惯于拥有一个大型 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>

【问题讨论】:

    标签: git scripting branch split git-branch


    【解决方案1】:

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

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

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

    【讨论】:

    • 能否请您解释一下没有经验的用户如何详细地拆分成不同的存储库?
    • 如需更详细的答案,请随时提出新问题,但基本思想是使用git init 创建例如 3 个新存储库,从包含每个目录的分支,然后将每个新存储库的主存储库设置为相应分支中的任何内容。之后,您可以删除每个项目存储库中的其他分支,并可能还指示 git 删除所有引用其他项目提交的对象,这些对象现在无法从新 repo 的 master 访问。
    猜你喜欢
    • 1970-01-01
    • 2019-09-29
    • 2015-09-17
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 2014-07-17
    • 2023-01-11
    • 1970-01-01
    相关资源
    最近更新 更多