我在这里进行了很好的搜索,但似乎没有任何东西可以回答我的问题,所以就这样吧。
我有一个具有当前文件夹结构的 git 存储库
/app/folder/
/app/folder2/..
/app/bundles/bundle1
/app/bundles/bundle2
我想将捆绑包中的每个捆绑包转换为自己的子模块,保留该捆绑包中代码的所有版本控制历史记录,并保持目录布局完全相同。原因是我有另一个应用程序,我想在其中使用一些捆绑包。
我尝试过使用
git filter-branch --subdirectory-filter bundles/client -- --all
但这不是正确的做法......
任何帮助将不胜感激。
实际上,使用 --subdirectory-filter 正是要做的事情,甚至在 filter-branch 联机帮助页的示例中给出了它。当然,它会将当前活动的分支替换为包含操作结果的新分支。原始分支(指向它的指针)通常保存在“refs/original/”中(请参阅联机帮助页中的 --original 选项)。
您可以将活动分支复制到其他地方:
git branch bundles/client
并恢复当前分支
git reset --hard original/refs/heads/oldbranchname
然后,您可以将活动分支导出为捆绑包,或者直接在子模块中获取它并从父存储库中删除引用。
如果使用了 filter-branch 的 --all 选项,则所有分支都会遭受活动分支的命运,因此您必须为每个分支重复复制操作。
遗憾的是,您无法将输出分支名称指定给 filter-branch 命令。可能值得在 Git 邮件列表上提出建议。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)