我有一个约2030次提交的回购。在提交2000周围,一个文件被修改,导致它的大小意外地从大约20M到1.2GB。是否可以重写历史记录以删除此文件,但仅限于提交2000? (我不想丢失此文件的先前历史记录)
我在考虑使用git-filter-branch,但是无法看到一种方法告诉它“来自提交” - 是否可能?
干杯 麦克
答案 0 :(得分:2)
git-filter-branch的手册页包含了确凿且权威的示例。
如果您想在某个提交之前停止重写,请在tag01
之前停止:
git-filter-branch ...... -- master ^tag01
替换你已有的点。 tag01可以改为commit-ish(revspec)
PS:如果您使用标签,请不要忘记--tag-name-filter cat
来重写这些
答案 1 :(得分:1)
你为什么不
new
,您不会将此文件修改为1.2 GB文件master
new
重新定位到-Xtheirs
答案 2 :(得分:1)
您可能需要尝试BFG Repo-Cleaner,这是git-filter-branch
的一种更快,更简单的替代方案,旨在从Git存储库中删除大型文件或私有数据。
下载the executable jar(需要Java 6或更高版本)并运行此命令:
$ java -jar bfg.jar --strip-blobs-greater-than 100MB my-repo.git
任何超过100MB的内容(不在最新提交的文件层次结构中)都将从存储库的历史记录中完全删除。如问题中所述,文件的所有小于100MB的版本将保持不变。
完全披露:我是BFG Repo-Cleaner的作者。