从前一个提交创建一个git存储库

nun*_*nia 2 git github

我是一个涉及创建具有许多功能的redmine插件的项目的一部分.

现在我想采取一些功能,并将它们转换为单独的插件.为此,我将为每个创建一个单独的git存储库.

在那个git存储库中,我希望从原始git存储库中获得完整的历史记录,只包含与该功能相关的文件.

我是否应该将旧存储库作为远程存储器并手动完成每个提交,找到我感兴趣的存储库,并将它们提交到新的存储库?

或者还有另一种(更实际的)方法吗?

旧git存储库上的工作流程是:

  • 只有主分支;

  • 每次里程碑完成,它都会被提交并推送到遥控器;

ear*_*arl 7

看看git-filter-branch(1),它是Git的瑞士军刀,用于自动重写历史记录,它当然允许你保持所有提交触及一组已定义的文件(并丢弃其他所有文件).

如何详细使用它取决于您的实际存储库.例如,如果您要保留的所有文件已经整齐地包含在子目录中(例如foobar),那么以下就足够了:

git filter-branch --subdirectory-filter foobar --prune-empty -- --all
Run Code Online (Sandbox Code Playgroud)

作为替代方法,您可以使用以下内容删除所有文件,但要删除存储库中的文件:

git filter-branch --tree-filter 'rm -f filename1 pattern2.*' --prune-empty -- --all
Run Code Online (Sandbox Code Playgroud)