有没有办法在指定提交之前移除所有提交并将该提交用作初始提交?在特定提交之前移除提交
18
A
回答
16
比方说,新的历史最悠久的提交的哈希值是X,我们可以用“oldroot”和“newroot”暂时:
git checkout -b oldroot X
TREE=`git write-tree`
COMMIT=`echo "Killed history" | git commit-tree "$TREE"`
git checkout -b newroot "$COMMIT"
git rebase --onto newroot oldroot master
# repeat for other branches than master that should use the new initial commit
git checkout master
git branch -D oldroot
git branch -D newroot
git gC# WARNING: if everything's done right, this will actually delete your history from the repo!
这将创建一个“newroot”具有相同的内容为“oldroot”承诺承诺,但没有任何父母。然后,它将所有其他分支重新分配到新根,这应该是所有分支的历史。
编辑:测试和固定;稍晚,精一点
+2
请注意,“Killed History”成为初始提交的新提交消息。如果你想要别的东西,比如原始信息,就把它放在那里。 – 2010-06-17 16:26:34
0
更容易的解决办法是, 考虑最初你的分支有提交主要和你没有提交第一,现在还没有一个上第一顶提交第二。所以,你有这样的:
main->first->second
现在你想对的主要顶部第二上,而不是第一顶部。喜欢的东西:
main->second->first or main->second
你可以简单地做,
git rebase -i main
这会给你一个交互式shell,你可以重新提交的顺序或删除任何提交您所选择的。
相关问题
- 1. 在提交之前将提交提交到新分支
- 2. 修改之前提交的提交
- 3. 提交之前提交的JQuery模式
- 4. replaceWith提交之前
- 5. 删除之前在Git中的提交
- 6. 提交表单之前清除值(不取消提交)
- 7. 混帐:如何删除历史特定之前提交
- 8. 在提交新的更改之前更正以前的提交
- 9. 如何编辑以前的提交,并在不删除git之前的提交?
- 10. 如何在我的提交之前插入已提交的提交,并还原那些已提交的提交?
- 11. 获得提交的前散列提交,改变特定文件
- 12. 从App Store提交中排除特定iPhone类型提交
- 13. 删除特定提交明知提交ID
- 14. 更改一个特定提交的名称,电子邮件和/或日期,*提交之前*提交
- 15. 执行JavaScript之前提交
- 16. PHP订单之前提交
- 17. 校验和之前提交
- 18. 之前提交表格
- 19. 预览之前提交
- 20. 推之前多次提交
- 21. jQuery的表单在IE提交没有验证之前提交
- 22. 在提交之前检查jQuery验证的表单提交
- 23. 如何在提交标记之前提交文件?
- 24. 在svn上提交之前检查每个提交
- 25. 在提交页面上提交之前进行验证
- 26. 删除特定之后的所有提交?或者在特定提交时克隆
- 27. 检查提交是否在提交前第一次提交
- 28. 如何在特定提交之前截断git历史记录?
- 29. 达到某个提交并放弃提交之前的所有提交
- 30. 如何删除特定的提交?
我知道我已经看过一个教程在某处做类似的事情......它展示了如何让历史回购结束于提交X,然后将提交X提交到HEAD并从它们开始新的回购,在X上注释关于如何访问历史回购。 我现在找不到它,但它是可能的。 – Daenyth 2010-06-17 15:41:34