Git &引用;“dvc推送”;在几次本地提交之后
我在一个DVC(数据版本控制)项目上工作。比如说,我在当地做了很多承诺。大概是这样的:Git &引用;“dvc推送”;在几次本地提交之后,git,dvc,Git,Dvc,我在一个DVC(数据版本控制)项目上工作。比如说,我在当地做了很多承诺。大概是这样的: # make changes for experiment 1 dvc add my_data_file git add my_data_file.dvc git commit -m "Experiment 1" # make changes for experiment 2 # which change both code and data dvc add my_data_file git add my_
# make changes for experiment 1
dvc add my_data_file
git add my_data_file.dvc
git commit -m "Experiment 1"
# make changes for experiment 2
# which change both code and data
dvc add my_data_file
git add my_data_file.dvc
git commit -m "Experiment 2"
# make changes for experiment 3
# which change both code and data
dvc add my_data_file
git add my_data_file.dvc
git commit -m "Experiment 3"
# Finally I'm done
# push changes:
dvc push
git push
然而有一个问题:dvc push
只会推送实验3中的数据。是否有任何方法可以从所有本地提交(即从与远程分支分离的第一次提交开始)推送数据
目前我看到两种选择:
这两个选项看起来都很麻烦,而且容易出错。有更好的方法吗?@NShiny,有一张相关的票: 请给它投票,这样我们就知道如何优先考虑它 作为一种解决方法,我建议运行。它安装一个
pre-push
GIt钩子并自动运行dvc-push
:
Git pre-push hook executes dvc push before git push to upload files and directories under DVC control to remote.
这意味着,尽管您需要在每次
git提交后运行git push
:(为了减少错误发生率,您可以使用HEAD~1
引用上一次提交,而不是使用确切的提交哈希
如果您使用的是Bash,那么可以使用for循环来迭代最后3次提交和dvc推送内容
用于{1..3}中的x;执行git签出头~1&&dvc push;完成
记住git checkout
返回您的工作分支(即git checkout master
)
回答您的评论():
有没有办法在dvc安装命令后禁用挂钩
运行dvc install
时,它会在.git/hooks
目录下创建三个文件:
.git/hooks
├── post-checkout
├── pre-commit
└── pre-push
要禁用它们,您可以删除这些文件(例如,rm.git/hooks/post checkout
)
顺便说一句,我编辑了DVC的文档以包含更多关于此的信息。感谢您的回复!顺便说一句,DVC安装
文档描述了如何将DVC挂钩安装到存储库中,但没有解释如何卸载。有没有办法在DVC安装
命令后禁用挂钩?