我们有一个有着悠久历史的git项目.
具体来说,在项目的早期,项目中有相当多的二进制资源文件,这些文件现在已被删除,因为它们实际上是外部资源.
但是,由于先前提交了这些文件,我们的存储库大小> 200MB(总结账时间约为20MB).
我们想要做的是"折叠"历史记录,以便存储库看起来是从以后的版本创建的.例如
1-----2-----3-----4-----+---+---+
\ /
+-----+---+---+
Run Code Online (Sandbox Code Playgroud)
因此,我们希望在某一点之前丢失项目历史.此时只有一个分支,因此尝试处理多个起点等没有复杂性.但是我们不希望丢失所有历史记录并使用当前版本启动新的存储库.
这是可能的,还是我们注定要永远拥有一个膨胀的存储库?
本节最后环节链:积攒和引用日志中http://ftp.newartisans.com/pub/git.from.bottom.up.pdf建议经常积攒采取进步工作的快照.作者建议您可以使用cron作业定期存储您的工作,而无需手动执行存储.
存储的美妙之处在于它允许您将不显眼的版本控制应用于您的工作过程本身:即,您的工作树的各个阶段,每天.如果您愿意,您甚至可以定期使用存储,例如以下快照脚本:
Run Code Online (Sandbox Code Playgroud)$ cat <<EOF > /usr/local/bin/git-snapshot #!/bin/sh git stash && git stash apply EOF $ chmod +x $_ $ git snapshot没有理由你不能每小时从一个cron作业运行它,以及每周或每月运行reflog expire命令.
这种方法的问题是:
有没有人建议让这种自动存储工作更可靠?