与`git filter-branch --subdirectory-filter`相反的是什么?

Sep*_*ram 5 git version-control git-filter-branch

有了git filter-branch --subdirectory-filter你可以从当前仓库改造的子目录到自身的存储库.但是,我想做的是相反的事情:创建一个存储库,它将包含当前存储库的完整内容作为子目录,保持完整的历史记录,就好像它们总是在该子目录中一样.我不想使用子模块,因为我希望该目录成为存储库的一个完整组成部分.


背景:我的任务是编写一个简单的脚本,但任务的范围已经扩展,所以现在该脚本只是一个更大项目的子目录.它也没有自己的生存点,所以首选没有子模块的解决方案.

Jam*_*arp 8

最简单的解决方案是保留历史记录:只需将git mv所有文件放入子目录,提交更改,然后继续生活.

如果你真的想假装你一直在子目录中做这项工作,最简单的方法是使用类似的东西:

git filter-branch --tree-filter "mkdir SUBDIR && bash -c 'git mv -k {,.[!.],..[!.]}* SUBDIR/'"
Run Code Online (Sandbox Code Playgroud)

将SUBDIR替换为目标子目录的名称.