[英]Completely remove a file from whole git repository
在項目中使用git時,我不小心將一個大.zip
文件添加到了提交中。 我直到開始將其上傳到github時才注意到。 當我注意到時,我點擊了ctrl-c
, git remove
, git commit
並再次上傳了該文件(現在未跟蹤文件)。
我知道這不是正確的選擇,因為一旦我提交了.zip
,它就會保留在存儲庫中,直到我還原提交為止,但是可惜我沒有這樣做。
現在,當有人嘗試從存儲庫下載文件時,需要花費很多時間,有時會產生git the remote end hung up unexpectedly
(我讀過可以通過執行一些git config
來解決),這很煩人。
我的觀點是: 有沒有辦法告訴進一步的提取/提取請求,使該特定提交版本中的特定文件忘記了?
Github提供了有關刪除此類文件的有用幫助頁面 。 在StackOverflow上還有其他問題可以解決此問題
另請參閱Pro Git書籍的這一部分,此處提供了一個示例:
要從整個歷史記錄中刪除名為passwords.txt的文件,可以使用--tree-filter選項進行分支過濾:
$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd (21/21) Ref 'refs/heads/master' was rewritten
清理后,您還可以嘗試使用git gc進一步壓縮和清理存儲庫。
現在有一個名為“ BFG Repo-Cleaner”的工具,在github.com上被提及,它可以替代filter-branch https://help.github.com/articles/remove-sensitive-data/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.