我有一个回购,大约有2030个提交。在提交2000年左右,一个文件被修改,这导致它的大小意外地从大约20M移动到1.2 GB。是否可以重写历史记录以删除此文件,但仅从commit 2000中删除?(我不想丢失此文件的先前历史记录)
我在想git-filter-branch,但是看不到一个方法来告诉它"from commit“--这是可能的吗?
干杯,迈克
发布于 2011-06-24 18:06:30
git-filter-branch的手册页包含了有关此问题的确凿和权威的示例。
如果你想在某个提交之前停止重写,比如在tag01之前
git-filter-branch ...... -- master ^tag01用你已经拥有的东西来代替这些点。相反,tag01可能是任何提交式的(revspec)
PS:如果你使用标签,别忘了--tag-name-filter cat也会重写这些标签
发布于 2011-06-24 18:15:26
你为什么不
使用合并选项-Xtheirs
new,其中您不会将此文件修改为1.2 GB文件master to new。发布于 2013-02-02 06:18:49
你可能想试试BFG Repo-Cleaner,这是一种更快、更简单的git-filter-branch替代方案,用于从Git repos中删除大文件或私人数据。
下载the executable jar (需要Java6或更高版本)并运行以下命令:
$ java -jar bfg.jar ---blobs-大于100MB my-repo.git
任何超过100MB大小的文件(不在最近提交的文件层次结构中)都将从存储库的历史记录中完全删除。所有小于100MB的文件版本都将被保留,如问题中所指定。
完全披露:我是BFG Repo-Cleaner的作者。
https://stackoverflow.com/questions/6466235
复制相似问题