簡體   English   中英

在Git Repo的目錄中刪除文件的所有先前版本

[英]Remove all previous versions of files in a directory in a Git Repo

我的git倉庫中有很多大型資產,我想從該倉庫中刪除所有以前的修訂並刪除文件。 但是它需要將文件的最新副本保留在該目錄中。

到目前為止,我只看到了如何清理以前刪除的文件的文件,而沒有必要保留最新版本。

您正在使用git進行文件存儲,這不是它的預期用途。

如果您不需要更改歷史記錄,只需創建一個包含大型資產的tar.gz文件(或任何合適的存檔/壓縮方法),然后從git repo中引用它,也許使用一個腳本或Makefile將其復制並將其解壓縮到正確的位置。

至於從歷史記錄中完全刪除文件(包括當前版本!),有兩個步驟:

  1. 從所有提交中刪除文件: git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch FILENAME_WITH_PATH' --prune-empty --tag-name-filter cat -- --all

  2. 清理/清除文件對象的存儲庫: rm -rf .git/refs/original/; git reflog expire --expire=now --all; git gc --prune=now; git gc --aggressive --prune=now rm -rf .git/refs/original/; git reflog expire --expire=now --all; git gc --prune=now; git gc --aggressive --prune=now

如果您正在使用遠程倉庫,並且還需要清理它,那么push -f可能還不夠; 您將需要從頭開始重新創建它,然后將本地(已清理)副本推送到它。

暫無
暫無

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

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