簡體   English   中英

Git從所有先​​前的提交中刪除特定文件

[英]Git remove specific files from all previous commits

我開始了一個小項目(10mb),隨着它的增長和產生輸出圖像,它呈指數增長(達到12 gb)。 我知道我上傳的圖片不是代碼的一部分。 我刪除了它們,添加了一條規則,即不上傳圖像並保持提交。 現在的問題是代碼仍然只有幾個mb,但是整個存儲庫重2 gb。 我想還原或刪除我每次發送圖像時上傳的歷史記錄中的所有更改

new file: image.png 

到服務器上載圖像,現在我要刪除圖像的任何痕跡。

我獨自一人在分支機構工作。

有人可以告訴我該怎么做嗎?

可以使用git rebase -i 它將打開一個對話框,您可以在其中更改每個提交並從該提交中刪除圖像

變基的副作用是SHA-1將被更改,如果其他人已經拉出了分支,它將對他不可用,他將不得不刪除該分支並再次將其檢出。 因此,請三思而后行。

如何查找在哪個提交中修改了文件?

git log --follow <file_name>  

如何從大量提交中刪除文件?

閱讀這篇文章 它有詳細的解釋+示例代碼。

最佳實踐

將大文件存儲在子模塊中,這樣它們就不會成為您的基本代碼的一部分

您可以使用git filter-branch Github有一個很好的幫助頁面,解釋了從存儲庫中刪除文件的過程。

https://help.github.com/articles/remove-sensitive-data/

暫無
暫無

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

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