.patch
我尝试(在一个小型测试存储库上)将存储库导出到使用命令为每次提交生成的一系列文件git format-patch
中,然后通过在空目录上使用“git init”git apply
以及每个补丁文件的命令来重构存储库。它起作用了——只有一个问题——当git am
将补丁应用到存储库而不是保留补丁的 ID 标签时,它会生成一个新标签。这在以后可能会成为一个问题,因为它可能难以确定哪些提交是多余的,哪些不是。
至于为什么我不使用克隆存储库的常规方法,例如git clone
- 答案是一般来说,我确实使用git clone
克隆存储库 - 但我目前有非常具体的原因来尝试看看我是否可以这样做这种方式太长了,无法在这里详细介绍(尽管我可能会在这个问题后面提到原因)——不仅这些原因太长,而且我看不到它们的最终细节如何影响这个问题的正确答案是。
但是,如果您告诉我这.patch
不是用于此目的的正确文件格式,我愿意接受。我想做的最重要的是:
提取对 repo 的单个提交到单个文件 - 并了解这些文件在 repo 历史记录中的顺序等。
能够根据提交的那些提取版本完全重构 repo
稍后能够“取消规范化”我认为不应该进行的任何提交(并且将其保存在存储库的历史记录中不值得它会导致项目历史记录大小膨胀),以便我可以在没有“去规范化”提交的情况下重新构建 repo。(顺便说一下,第 3 方面与我希望能够做到这一点的原因非常相关。)