Git存储库和历史Hijinks

Git存储库和历史Hijinks,git,github,merge,git-fork,Git,Github,Merge,Git Fork,假设有人试图合并一组具有特定属性的不同GitHub存储库。也就是说,大多数存储库的内容都是各种tarball的副本,反映了外部只读存储库工作树的各种历史状态。 但是,其中一个存储库只包含该工作树中的文件夹内容。考虑到所有其他存储库都共享许多tarball转储提交,这些提交更新了它们的内容,可以创建一个新的存储库并进行设置,以便所有其他存储库,即使是错误的存储库,最终都成为它的分支吗? 如果这是可能的,那么新存储库是否可以保留反向合并存储库中的所有历史记录?尽管如此,我们如何进行这样的手术呢 如果

假设有人试图合并一组具有特定属性的不同GitHub存储库。也就是说,大多数存储库的内容都是各种tarball的副本,反映了外部只读存储库工作树的各种历史状态。 但是,其中一个存储库只包含该工作树中的文件夹内容。考虑到所有其他存储库都共享许多tarball转储提交,这些提交更新了它们的内容,可以创建一个新的存储库并进行设置,以便所有其他存储库,即使是错误的存储库,最终都成为它的分支吗?
如果这是可能的,那么新存储库是否可以保留反向合并存储库中的所有历史记录?尽管如此,我们如何进行这样的手术呢

如果您需要详细信息,我将描述我想要完成的实际合并。您可以构建任何您想要的历史记录。这并不难。git提交树使用任意树、父级和元数据创建提交。git write tree为索引中的内容构建树;其他树已经在repo中的某个地方,或者可以直接用git mktree构建。@jtthill:你知道在像我所处的情况下如何实现这一点的好教程吗?git的所有复杂性都在于你可以用它极其简单的核心结构做各种各样的事情。我不是开玩笑。执行git init-template=为已经阅读了大量文档的人创建一个没有面包屑的操场回购,并自由地使用find命令查看git操作到底有多简单。树的dag结构坚固到了不可破坏的程度,所以不要害怕四处游荡。单独的tarball就是树,画出你想要的DAG,你就完成了。@jthill:这一切都很好,但对我没有多大帮助,因为它没有很好地解释在这个问题的上下文中哪些Git命令可能有用,以及我可能希望如何和以什么顺序使用它们。此外,我在这里不仅仅处理纯tarball:所说的归档文件首先被复制到其他人的Git存储库中,我正在尝试合并所有这些文件,这对我来说很困难,因为并非所有文件都反映了它们不可克隆源的整个历史,以至于我的存储库对它们的依赖性被颠倒了。