簡體   English   中英

從整個git倉庫中完全刪除文件

[英]Completely remove a file from whole git repository

在項目中使用git時,我不小心將一個大.zip文件添加到了提交中。 我直到開始將其上傳到github時才注意到。 當我注意到時,我點擊了ctrl-cgit removegit 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/

鏈接到工具頁面https://rtyley.github.io/bfg-repo-cleaner/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM