我们有一个码头工人。。。从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"
等等
当一个数据集被证明毫无价值时,删除引用它的名称(此处为x1
、x2
等(。实际数据最终会消失,通常在几周内消失。
听起来你根本不需要版本控制!
但如果你想使用Git,你可以。但是,请注意
- 您必须创建一个没有父级的新分支。原因是Git希望任何带有父级的提交都有其父级可用(递归(。因此,如果你只是在某个地方删除链,你会得到一个损坏的存储库
- Git使用垃圾回收来回收空间。您可以在本地强制GC,但如果将分支推送到repote存储库,则还需要在远程计算机上显式运行GC。你可以用钩子
简介:
- git checkout-孤儿临时#创建一个没有提交的新分支"临时">
- gitcherry-pick-master#从master中选择最后一个提交
- 更改文件
- git add-A
- git commit-m"注释">
- git branch-f master temp#将master分支移到temp
- git checkout master#更改活动分支
- git branch-d temp#删除临时分支
- git reflog expire--all--expire=0#清除对旧提交的reflog引用
- git-gc--prune=all#强制gc回收空间