撤消 'dvc add' 操作

Undo 'dvc add' operation

dvc add-ed 了一个我不想添加的文件。我还没有承诺。

如何撤消此操作?在 Git 中,你会做 git rm --cached <filename>.

明确一点:我想让 DVC 忘记该文件,并且我希望该文件在我的工作树中保持不变。这与 dvc remove 的作用相反。

一个 issue on the DVC issue tracker suggests that dvc unprotect is the right command. But reading the manual page 另有建议。

DVC 可以吗?

根据 DVC Discord 服务器上的 mroutis:

  1. dvc unprotect 文件;如果您不使用 symlinkhardlink 缓存,则没有必要这样做,但不会有什么坏处。
  2. 删除 .dvc 文件
  3. 如果您需要删除缓存条目本身,运行 dvc gc,或者在data.dvc中查找MD5并手动将其从.dvc/cache中删除。

编辑 -- 现在他们的 Github 页面上有一个问题要将其添加到手册中:https://github.com/iterative/dvc.org/issues/625

dvc remove 似乎可以为未提交的文件执行您需要的操作 - 至少对于不在管道中的文件。关键(我从错误或文档中不清楚)是传递 ….dvc 文件名,否则它会尝试查找并将其作为 dvc.yaml.[=14 中的一个部分删除=]

# Precondition: DVC is configured for the repo. No dvc.yaml file (untested with it)
$ touch so-57966851.txt
$ dvc add so-57966851.txt
WARNING: 'so-57966851.txt' is empty.                                                                                                                          
100% Adding...|████████████████████████████████████████|1/1 [00:00, 49.98file/s]
                                                                                                                                                              
To track the changes with git, run:

    git add .gitignore so-57966851.txt.dvc
# Ooops! I did the wrong thing! I didn't mean to add that…
$ dvc remove so-57966851.txt.dvc
$ ll so-*.txt
-rw-r--r-- 1 ibboard users 0 Aug 23 20:27 so-57966851.txt

(使用 v2.5.4 测试)