我想刪除很久以前在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. Git:從歷史記錄中刪除替換文件的提交
- 4. VSO git文件歷史中的「簡單歷史記錄(默認)」和「完整歷史記錄」有什麼區別?
- 5. Git從歷史記錄中刪除大文件
- 6. Git/Bitbucket - 從整個歷史記錄中刪除文件/提交
- 7. GWT歷史記錄:歷史記號
- 8. git rm是否刪除文件的所有歷史記錄?
- 9. 無法從Git歷史記錄中刪除目錄
- 10. git從歷史記錄中刪除目錄
- 11. git - Blob/index文件歷史記錄
- 12. 在git中恢復已刪除的歷史記錄文件
- 13. 如何從git存儲庫中刪除舊的歷史記錄?
- 14. 從git歷史記錄中刪除未使用的資產
- 15. 刪除瀏覽器歷史記錄
- 16. 如何從mercurial的歷史記錄中刪除大文件?
- 17. 從git歷史記錄中刪除提交(永遠)
- 18. LDAP登錄歷史記錄
- 19. 從git存儲庫中刪除特定分支的全部歷史記錄
- 20. 如何從java文件中刪除SVN歷史記錄?
- 21. 從歷史記錄中刪除文件(磁盤空間不足)
- 22. 如何從歷史記錄中刪除二進制文件?
- 23. 在git中保存歷史記錄
- 24. 如何取消刪除以前在git歷史記錄中刪除的文件?
- 25. 修復損壞的git歷史記錄
- 26. 刪除Android瀏覽器特定域的歷史記錄
- 27. 清除Mongo Shell中的歷史記錄
- 28. 帶歷史記錄的EditText
- 29. Nhibernate的歷史記錄
- 30. 從角度刪除歷史記錄中的組件2
謝謝,這看起來正是我所需要的。原諒無知,但是在這個例子中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