我想删除很久以前在Git存储库中的特定文件的修订历史记录。目标是使它看起来像文件从未提交特定修订。有谁知道如何做到这一点?谢谢!从Git历史记录中删除具有历史记录的特定文件
1
A
回答
2
听起来像你想git filter-branch
。
但是,请务必考虑该名男子页上的警告:
警告!重写的历史记录 对于所有的 对象具有不同的对象名称,并且不会与 原始分支会聚。 不会是 能够在 原始分支的顶部轻松推送并分发 重写的分支。如果您不知道 的全部含义,请不要使用 此命令,并且无论如何只要简单的单一提交 就足以解决您的问题,无论如何不要使用 。 (请参见“恢复上游 REBASE”的混帐底垫(1) 更多信息有关改写 公布的历史部分。)
手册页的"Examples"部分显示了如何卸下历史的给定文件。这对你来说应该是一个很好的起点。
假设你想从所有 提交删除文件 (包含机密信息的 或侵犯版权):
git filter-branch --tree-filter 'rm filename' -- --all
0
如果你真的不想要删除从历史的承诺,如Tim Henigan所说,filter-branch
就是要走的路。然而,他从manpage引用的警告有很好的理由,很可能你会找到另一种解决方案。
要扭转单一的影响提交,你可以简单地使用:
git revert <commit> # that's the SHA1 hash of the commit
这将创建一个新的提交,在当前的分支,它反转指定的所有更改的顶部提交。
相关问题
- 1. 从SSH命令行历史记录删除特定历史
- 2. 从git历史记录中删除已删除的文件
- 3. TFS删除文件的历史记录
- 4. Git:从历史记录中删除替换文件的提交
- 5. 从git历史记录中删除文件的某些内容
- 6. VSO git文件历史中的“简单历史记录(默认)”和“完整历史记录”有什么区别?
- 7. Git/Bitbucket - 从整个历史记录中删除文件/提交
- 8. Git从历史记录中删除大文件
- 9. 从git历史记录中删除文件不起作用
- 10. GWT历史记录:历史记号
- 11. git rm是否删除文件的所有历史记录?
- 12. 删除具有多个分支的git历史记录中的特定提交?
- 13. Perforce删除所有历史记录
- 14. git从历史记录中删除目录
- 15. 无法从Git历史记录中删除目录
- 16. 文件历史记录8
- 17. git - Blob/index文件历史记录
- 18. Git删除文件历史记录中的一步
- 19. 在git中恢复已删除的历史记录文件
- 20. 贝宝Sandbox历史记录重定向到REAL历史记录
- 21. 使用egit插件从git提交中删除历史记录
- 22. 从GIT历史记录中删除给定扩展名的所有文件
- 23. git恢复删除的文件及其更改历史记录
- 24. 删除GitHub的提交历史记录?
- 25. 完全从Subversion历史记录中删除空的git提交
- 26. 如何从git存储库中删除旧的历史记录?
- 27. 从git历史记录中删除未使用的资产
- 28. Git从历史记录中删除重复的提交
- 29. 删除模块历史记录CVS
- 30. 删除修订历史记录
谢谢,这看起来正是我所需要的。原谅无知,但是在这个例子中HEAD是我想要删除的版本号? – Alexander 2010-09-10 15:35:58
@Alexander:HEAD指定要重写哪个参考历史。该示例试图从HEAD的所有祖先中删除“坏”文件(在该示例本身后面描述)。 – wRAR 2010-09-10 15:40:29
这个例子实际上不会重写任何分支。如果你真的想要重写所有的分支,你可以用' - --all'来代替'HEAD'。 – Cascabel 2010-09-10 18:15:22