首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >几次本地提交后的"dvc推送“

几次本地提交后的"dvc推送“
EN

Stack Overflow用户
提问于 2019-06-29 15:55:34
回答 2查看 980关注 0票数 2

我使用DVC (数据版本控制)做一个项目。假设我做了大量的本地提交。就像这样:

代码语言:javascript
复制
# 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中的数据。是否有任何方法从所有本地提交(即从第一次提交开始,从远程分支分离)中推送数据?

目前,我看到两种选择:

  1. 标记每个提交并使用dvc push -T将其推送
  2. 在"expermient 3“提交之后,为所有本地提交执行git checkout commit-hash && dvc push,而不是将其推送到远程。

这两种选择似乎都很麻烦,而且容易出错。有什么更好的方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-29 21:10:49

@NShiny,有一张相关的票:

支持不同提交之间的推送/拉/度量/gc等

请投一票,这样我们就知道如何把它放在优先位置了。

作为解决办法,我建议运行dvc install。它安装pre-push GIt钩子并自动运行dvc push

代码语言:javascript
复制
Git pre-push hook executes dvc push before git push to upload files and directories under DVC control to remote.

这意味着,尽管您需要在每个git push之后运行git commit

票数 2
EN

Stack Overflow用户

发布于 2019-06-30 12:59:27

为了减少错误的发生,您可以使用HEAD~1来引用以前的提交,而不是使用确切的提交哈希。

如果您在Bash上,可以使用for循环在最后3次提交中迭代,并对内容进行dvc push

代码语言:javascript
复制
for x in {1..3}; do git checkout HEAD~1 && dvc push; done

记住git checkout回到您的工作分支(即git checkout master)

回答您的评论(几次本地提交后的"dvc推送“):

有办法在dvc安装命令之后禁用钩子吗?

运行dvc install时,它会在.git/hooks目录下创建三个文件:

代码语言:javascript
复制
.git/hooks
├── post-checkout
├── pre-commit
└── pre-push

要禁用这些文件,可以删除这些文件(即rm .git/hooks/post-checkout)。

顺便说一下,我编辑了DVC的文档,以包含更多有关这方面的信息。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56818930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档