我有一個約2030次提交的回購。在2000左右的時候,一個文件被修改,導致它的大小意外地從大約20M移動到1.2GB。是否有可能重寫歷史記錄以刪除此文件,但只能從提交2000? (我不想失去此文件的歷史記錄)完全從git repo中刪除文件(從某個時間點開始)
我在想git-filter-branch,但沒有看到一種方式來告訴它「從提交」 - 是否有可能?
乾杯 邁克
我有一個約2030次提交的回購。在2000左右的時候,一個文件被修改,導致它的大小意外地從大約20M移動到1.2GB。是否有可能重寫歷史記錄以刪除此文件,但只能從提交2000? (我不想失去此文件的歷史記錄)完全從git repo中刪除文件(從某個時間點開始)
我在想git-filter-branch,但沒有看到一種方式來告訴它「從提交」 - 是否有可能?
乾杯 邁克
的git的過濾分行手冊頁包含此確鑿的,權威的例子。
如果你想停止改寫前一定承諾,tag01
前說:
git-filter-branch ...... -- master ^tag01
替代你已經擁有了點。 tag01也可以是任何提交-ISH(revspec)
PS:如果你使用的標籤,不要忘記--tag-name-filter cat
重寫這些也
你爲什麼不
new
提交2000,在那裏你不要修改此文件到1.2 GB的文件master
到new
,與合併選項-Xtheirs
你可能想嘗試的BFG Repo-Cleaner,更快,更簡單git-filter-branch
替代設計用於從Git的回購除去大的文件或私有數據。
下載the executable jar(需要Java 6或以上),並運行此命令:
$ Java的罐子bfg.jar --strip-斑點,降幅高於100MB我-repo.git
大小超過100MB的任何文件(不在您的最新的提交的文件層次結構中)將從您的存儲庫的歷史記錄中完全刪除。正如問題中指定的那樣,所有小於100MB的文件版本都將被單獨保留。
完全披露:我是BFG Repo-Cleaner的作者。