我想使用got bundle镜像大型存储库的一部分。 我的计划是创建一个新分支,并从中删除不相关的文件。但是此分支的捆绑包含分支前的历史记录,包括所有已删除的文件。
有没有一种方法来创建没有这些“剩菜”的捆绑包?
P.S。将模块拆分为子模块是不切实际的,因为删除的文件遍布目录。 此外,这些文件应保留在存储库的主分支中。
答案 0 :(得分:1)
重写历史记录的唯一方法(我知道)是做一个交互式rebase并删除你不想要的所有行。该过程基本上使用您选择的修改重放开发历史记录。如果你回去很长一段路,这有点毛茸茸,你在这个过程中尽早做出的选择可能会迫使你在以后修复很多冲突。
最终结果是一个新的分支(你确实保留了原始分支的备份,对吗?)看起来具有完全相同的内容,但是通过完全不同的路径到达那里。这意味着每个提交将具有不同的SHA,并且两个分支将不兼容以进行合并。
基本上,我会不这样做,除非问题更改是最近的,并且存储库的所有用户同意将开发迁移到新分支。
如果我只是想查看最近的历史记录并回发补丁文件,而不移动过多的数据,那么我会使用浅克隆。
答案 1 :(得分:1)
你需要一个--orphan
分支,然后将所需的历史记录'重新绑定'到它上面(假装你想要首先重新分支的分支,这样你有一个起点/终点,注意到rebase默认不包括合并)
然后你应该能够捆绑新的孤儿分支。
或者尝试git-archive
- 从命名树创建文件存档。