相关疑难解决方法(0)

折叠git存储库的历史记录

我们有一个有着悠久历史的git项目.

具体来说,在项目的早期,项目中有相当多的二进制资源文件,这些文件现在已被删除,因为它们实际上是外部资源.

但是,由于先前提交了这些文件,我们的存储库大小> 200MB(总结账时间约为20MB).

我们想要做的是"折叠"历史记录,以便存储库看起来是从以后的版本创建的.例如

1-----2-----3-----4-----+---+---+
                   \       /
                    +-----+---+---+
Run Code Online (Sandbox Code Playgroud)
  1. 存储库已创建
  2. 添加了大量二进制文件
  3. 删除了大量的二进制文件
  4. 存储库的新目标"开始"

因此,我们希望在某一点之前丢失项目历史.此时只有一个分支,因此尝试处理多个起点等没有复杂性.但是我们不希望丢失所有历史记录并使用当前版本启动新的存储库.

这是可能的,还是我们注定要永远拥有一个膨胀的存储库?

git version-control

81
推荐指数
4
解决办法
3万
查看次数

自动存储

本节最后环节链:积攒和引用日志http://ftp.newartisans.com/pub/git.from.bottom.up.pdf建议经常积攒采取进步工作的快照.作者建议您可以使用cron作业定期存储您的工作,而无需手动执行存储.

存储的美妙之处在于它允许您将不显眼的版本控制应用于您的工作过程本身:即,您的工作树的各个阶段,每天.如果您愿意,您甚至可以定期使用存储,例如以下快照脚本:

$ cat <<EOF > /usr/local/bin/git-snapshot
#!/bin/sh
git stash && git stash apply
EOF
$ chmod +x $_
$ git snapshot
Run Code Online (Sandbox Code Playgroud)

没有理由你不能每小时从一个cron作业运行它,以及每周或每月运行reflog expire命令.

这种方法的问题是:

  1. 如果您的工作副本没有变化,"git stash apply"将导致您的上一个藏匿点应用于您的工作副本.
  2. 在执行cron作业和处理工作副本的用户之间可能存在竞争条件.例如,运行"git stash",然后用户打开文件,然后执行脚本的"git stash apply".

有没有人建议让这种自动存储工作更可靠?

git version-control

9
推荐指数
2
解决办法
2680
查看次数

标签 统计

git ×2

version-control ×2