【问题标题】:Git - how to delete all but previous 2 (or n) version of files?Git - 如何删除除前 2 个(或 n 个)文件版本之外的所有文件?
【发布时间】:2016-05-19 17:20:48
【问题描述】:

我有一个测试存储库,我们在其中进行了一系列更改以传递给生产团队。这已经增长了一点 - 我们想修剪回购。由于我们在其他客户中有副本 - 我们希望

  • 对于给定目录中的所有文件 - 删除除之前 3 个版本之外的所有文件,并从存储库中删除所有引用。

我想按目录执行此目录。基本上从 git/repo/disk 中删除目录中给定文件的任何早于 n-3 的版本。

谢谢

【问题讨论】:

  • Git 由 repository 的版本运行,而不是每个 file 的真正版本。除了最后 n 个版本的 repo 之外,删除所有版本将非常容易。但是,如果您想保留每个文件的最后 n 个版本,那会是什么样子。如果一个提交最初有 10 个文件更改,但使用您的修剪算法,因为其中 9 个随后被更改 (n+2) 次,您将保留该提交但现在只包含一个文件。该提交的提交消息将具有欺骗性。无论如何,大有多大? Git 在压缩方面做得很好。
  • repo 是托管的 - 大约 3GB。主要是图像 - 这就是我们想要这样做的原因.. t

标签: git gitlab


【解决方案1】:

您可以创建此 repo 的 shallow 克隆。浅意味着您可以进行最后 n 次提交(针对整个树而不是每个文件的提交)。
git clone --depth 2 git@your.server.com:dir/repo.git shallow_repo
请注意,如果您希望此克隆作为服务器,您可能需要添加 --mirror

您也可以在同一台机器上使用本地目录执行此操作:
git clone --depth 2 file:///path/to/repo/ shallow_repo
请注意,从本地目录执行此操作可能只会带来当前分支,而不是全部。

【讨论】:

    猜你喜欢
    • 2016-09-25
    • 2020-09-08
    • 2021-12-24
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 2011-06-16
    相关资源
    最近更新 更多