2011-06-24 77 views
4

我有一個約2030次提交的回購。在2000左右的時候,一個文件被修改,導致它的大小意外地從大約20M移動到1.2GB。是否有可能重寫歷史記錄以刪除此文件,但只能從提交2000? (我不想失去此文件的歷史記錄)完全從git repo中刪除文件(從某個時間點開始)

我在想git-filter-branch,但沒有看到一種方式來告訴它「從提交」 - 是否有可能?

乾杯 邁克

回答

2

的git的過濾分行手冊頁包含此確鑿的,權威的例子。

如果你想停止改寫前一定承諾,tag01前說:

git-filter-branch ...... -- master ^tag01 

替代你已經擁有了點。 tag01也可以是任何提交-ISH(revspec)

PS:如果你使用的標籤,不要忘記--tag-name-filter cat重寫這些也

1

你爲什麼不

  1. 在建立一個新分支new提交2000,在那裏你不要修改此文件到1.2 GB的文件
  2. 再次基於masternew,與合併選項-Xtheirs
  3. 垃圾收集的資料庫,以節省磁盤空間。
1

你可能想嘗試的BFG Repo-Cleaner,更快,更簡單git-filter-branch替代設計用於從Git的回購除去大的文件或私有數據。

下載the executable jar(需要Java 6或以上),並運行此命令:

$ Java的罐子bfg.jar --strip-斑點,降幅高於100MB我-repo.git

大小超過100MB的任何文件(不在您的最新的提交的文件層次結構中)將從您的存儲庫的歷史記錄中完全刪除。正如問題中指定的那樣,所有小於100MB的文件版本都將被單獨保留。

完全披露:我是BFG Repo-Cleaner的作者。

相關問題