我有一个超过3年的大型仓库git,我想删除一年多以前的更改历史记录。这可能吗?可以使用git rebase但是如何?Git删除历史提交
回答
删除历史记录可能无法解决您的问题。很可能,在某个时间点,一个大文件被提交到存储库并随后被删除。我想看看Find files in git repo over x megabytes, that don't exist in HEAD。
调查this article from the Pro Git book中称为git replace
的黑魔法,它以您的确切情况为例。基本上,如果你可以在历史中找到一个你想作为新根的点,那么你可以用一个没有父母的提交来替代它,就好像它是在空气中创建的一样。您甚至可以将原始树存储在一台机器上,如果您再次需要,可以轻松恢复历史记录。
请注意git rebase
(和git replace
,对于这个问题)的一个问题是,你想重写整个树,包括分支,所以它们都指向不同的提交。这也会导致团队中的其他人难以合并他们的变化,因为所有父母都有不同于以前的SHA。
从我读的,''git replace'' thingy不会在改变哈希的问题上工作。 –
@Jonas你是对的。重构我的答案以便清楚。 –
太棒了!它也会是git中的一个巨大bug你可以在不改变哈希的情况下替换一大堆历史记录。毕竟,这些加密哈希是使用git的原因之一。 –
- 1. 删除提交历史git的
- 2. Git - 从提交历史中删除种子回购的历史
- 3. 在历史中删除一些提交
- 4. 删除Github提交历史记录
- 5. 删除GitHub的提交历史记录?
- 6. Git删除远程历史
- 7. 删除/折叠git历史
- 8. 如何在提交后删除本地git历史记录?
- 9. 删除历史记录中的第一个git提交
- 10. 从git历史记录中删除提交(永远)
- 11. Git/Bitbucket - 从整个历史记录中删除文件/提交
- 12. 完全从Subversion历史记录中删除空的git提交
- 13. 从历史中删除旧的Git提交?
- 14. Git:从历史记录中删除替换文件的提交
- 15. 重写GIT中提交历史
- 16. 再次基于Git的提交历史
- 17. Git:修改历史提交的内容
- 18. Git合并没有历史提交
- 19. Git - 删除提交
- 20. 从历史Git删除合并
- 21. 如何清理git历史记录删除某些提交后被推送?
- 22. 在git中删除某个提交中的文件(回到历史记录)
- 23. 从本地没有的远程git历史记录中删除提交
- 24. git从分支中删除一些文件的提交历史记录
- 25. 的Git从历史删除文件,而不用复制预分支提交
- 26. 删除包含合并的git历史记录中的特定提交
- 27. 删除具有多个分支的git历史记录中的特定提交?
- 28. 从本地历史记录中删除git提交,并推送到github
- 29. 如何从git中删除远程分支及其提交历史记录?
- 30. 如何在Git中删除项目的提交历史记录的一部分?
Git用于保存您的更改。删除历史有什么影响? –
我的历史是它太大,.git目录大于400 MB,在每一个克隆我必须下载所有这些历史:( – paweb
可能的重复:[我如何从git存储库中删除旧的历史?](http:///stackoverflow.com/questions/4515580/how-do-i-remove-the-old-history-from-a-git-repository) –