在git上只维护两次提交



我们有一个码头工人。。。从git存储库中读取Dockerfile/文件并将基于该文件自动启动docker实例的东西。

对于我的应用程序,我基本上有为网络计算的权重,需要将其转化为这些Docker实例。(所以,基本上,我训练网络,将权重转储到类似pickle文件的文件中,然后将它们推送到git。(问题是,每个权重文件大约有4个gig,现在推送大约15次后,git存储库大约有60个gig。

对我来说,保持这些旧的重量没有任何价值,充其量,我真的只想要"最后已知的好"one_answers"当前"。。我一直在研究git-rebase-I-root。。但是,它是"交互式">

我真正想要的是一组git命令,我可以将其放入我的Makefile中,它将压缩除最后两个外的所有提交。。执行此操作的命令行是什么?

谢谢。。

Git是错误的工具。

如果你无论如何都想使用它,这里有一种方法:不要链接提交。使每个提交独立于所有其他提交。使用分支或标记名称(您可以选择;为了方便起见,我在这里说明了分支名称(来识别每个提交:

$ git checkout --orphan x1
$ git rm -r .; cp /path/to/data/set/x1/* .; git add .
$ git commit -m "data set x1"

和:

$ git checkout --orphan x2
$ git rm -r .; cp /path/to/data/set/x2/* .; git add .
$ git commit -m "data set x2"

等等

当一个数据集被证明毫无价值时,删除引用它的名称(此处为x1x2等(。实际数据最终会消失,通常在几周内消失。

听起来你根本不需要版本控制!

但如果你想使用Git,你可以。但是,请注意

  1. 您必须创建一个没有父级的新分支。原因是Git希望任何带有父级的提交都有其父级可用(递归(。因此,如果你只是在某个地方删除链,你会得到一个损坏的存储库
  2. Git使用垃圾回收来回收空间。您可以在本地强制GC,但如果将分支推送到repote存储库,则还需要在远程计算机上显式运行GC。你可以用钩子

简介:

  1. git checkout-孤儿临时#创建一个没有提交的新分支"临时">
  2. gitcherry-pick-master#从master中选择最后一个提交
  3. 更改文件
  4. git add-A
  5. git commit-m"注释">
  6. git branch-f master temp#将master分支移到temp
  7. git checkout master#更改活动分支
  8. git branch-d temp#删除临时分支
  9. git reflog expire--all--expire=0#清除对旧提交的reflog引用
  10. git-gc--prune=all#强制gc回收空间

最新更新