我想使用Git跟踪大型工作目录(许多演出)的微观变化(每天几次)。数据将是混合二进制/纯文本。二进制数据的变化几乎不会与文本信息一样多。很少需要访问旧提交,并且可能很慢,而最近的历史需要很快。
我不想永久丢失旧数据,只是将其移动到备份服务器或其他东西。 Git中是否存在允许将旧历史存档并仅在本地存储库中保留某个子集的内容?
如果没有,是否有更适合此目的的工具?我喜欢Git,因为我知道它,我想要版本控制和差异。我不需要Git的任何高级功能(如分支/合并,不分发),所以任何其他类似的VCS都会很好。
答案 0 :(得分:4)
如果您使用git format-patch
进行修补,请使用git clone --depth <depth>
创建一个浅层克隆并继续。但是,你可能没有,但在这种情况下你可能会发现this answer和this answer很有用。第二个结论是git checkout --orphan
可能是获得你想要的最佳方式。当然,您仍然需要在本地克隆一次完整的历史记录,以便创建一个较小的分支。
如果您有冒险精神,想要这么做,并且愿意忍受更复杂的推送过程,使用git format-patch
创建补丁并将其应用到git am
的另一个存储库并不困难执行也不是脚本。它会为你的推送过程添加一个额外的层 - 例如在浅层仓库上创建补丁,以编程方式应用于完整仓库,该仓库可以是本地仓库,也可以是其他仓库,从后者推送。时间和麻烦可能不值得,但它肯定是可能的。