我想刪除很久以前在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