【发布时间】:2016-05-05 06:40:09
【问题描述】:
注意:我知道这是改写历史,会改变所有的哈希值,把其他人搞砸。
我想接受一个提交,并删除它的父级。具体来说,提交现在应该看起来像一个初始提交。这意味着它的差异会改变;在历史上的那个时刻,看起来所有文件都是由该提交创建的。
如何做到这一点? (当然,我可以去编辑提交对象,但是提交不会相互指向。)另外,我想在一个新分支上执行此操作(这意味着现在有两个历史记录:原始的一个,以及另一个提交是初始提交的地方。)
【问题讨论】:
-
如果您想完全断开提交与其父级的连接并且没有历史记录,为什么不直接复制所有文件并创建一个新的存储库?
-
@EdCottrell 因为我希望孩子/后代能够生存。
-
所以,我不能 100% 确定这会有所帮助——我更像是一个 Mercurial 人而不是 git 人——但请参阅 stackoverflow.com/questions/9844082/…
-
澄清一下——你想让你选择的提交成为根(在这之前失去一切)?否则我不确定你在问什么。
-
还有 see here 了解如何使用
git replace隐藏历史记录,如果您的动机是您不特别关心旧提交并且不希望它们弄乱工具的输出
标签: git commit git-commit git-rewrite-history git-plumbing