我是一个涉及创建具有许多功能的redmine插件的项目的一部分.
现在我想采取一些功能,并将它们转换为单独的插件.为此,我将为每个创建一个单独的git存储库.
在那个git存储库中,我希望从原始git存储库中获得完整的历史记录,只包含与该功能相关的文件.
我是否应该将旧存储库作为远程存储器并手动完成每个提交,找到我感兴趣的存储库,并将它们提交到新的存储库?
或者还有另一种(更实际的)方法吗?
旧git存储库上的工作流程是:
只有主分支;
每次里程碑完成,它都会被提交并推送到遥控器;
看看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)
| 归档时间: |
|
| 查看次数: |
214 次 |
| 最近记录: |