0

当我使用 jfrog rt glc 时,它想删除工件中 gitlfs 存储库中的所有工件。但是我在本地 git repo 中还有一个文件!

E:\test-scripts>jfrog rt glc
[信息] 从 Artifactory 存储库中搜索文件 lfs-local ...<br> [信息] 从与模式 refs/remotes/* 匹配的 Git 引用中收集文件以保存 ...<br> [信息] Found 0 files to keep, and 3 to clean
4ee3d767d9126308d6bcf7b7290e85614a83fe51a9d84e765b9b7f4359f79fce
118feab626439e11e6ef3d3d12b3d297c0cccffaf2e34e5b5be7e4276c28678c
cbeffb41253da58f8924423f22a9bd53802633925664d68c46e6bfffd506a33d
Are you sure you want to delete the above files? (是/否):

E:\test-scripts>git lfs ls-files
4ee3d767d9 * xmlstarlet-1.6.1-win32.zip

jfrog rt glc 不是在寻找正确的目录!

git lfs 将工件放在目录 lfs\objects* 而不是 refs/remotes/*

命令 jfrog rt glc --refs='.git\lfs\objects*' 给出相同的输出。

目录 .git\lfs\objects* /s E:\test-scripts.git\lfs\objects\4e\e3 4ee3d767d9126308d6bcf7b7290e85614a83fe51a9d84e765b9b7f4359f79fce

'.git\lfs\objects*' 中还有 1 个文件

有人有这方面的经验吗?

4

2 回答 2

1

jfrog rt glc 不是在寻找正确的目录!

git lfs 将工件放在目录 lfs\objects* 而不是 refs/remotes/*

这不是命令的工作方式。它不会在.git/lfs/objects or .git/refs/remotes中查找对象。这是它的作用:

  1. 它在您.lfsconfig的远程 LFS 服务器 URL 中查找(这可能是您的 CLI 连接到的 Artifactory 服务器上的 LFS 存储库)。它下载该存储库中包含的对象哈希列表。
  2. refs/remotes/*它会搜索位于(因此,它会搜索所有远程跟踪分支)的所有 Git 引用的头部以查找 LFS 对象。这并不意味着它会在该目录中搜索对象。该.git/refs/remotes目录包含 Git 分支的名称,该命令会搜索这些分支。
  3. 它将在 Artifactory 服务器上找到的 LFS 对象列表与在 Git 远程跟踪分支中找到的对象列表进行比较。它准备从 Artifactory 服务器中删除在跟踪分支中也没有找到的对象。

运行时git lfs ls-files,它会搜索当前本地分支。如果您从rt glc要删除的命令中返回一个对象,那是因为您的本地分支不是最新的,或者您没有将更改推送到上游。

如果您想rt glc保留它在远程跟踪本地分支中发现的工件,您可以传递该选项--refs=refs/remotes/*,refs/heads/*

于 2018-08-10T17:59:56.697 回答
0

我发现了“不匹配”

命令 jfrog rt glc '默认'参考模式匹配到 unix 目录符号 ( / )

因此,对于 Windows,您必须使用 --refs=refs\remotes* 变量来获取正确的信息( \ )

jfrog.exe = jfrog 版本 1.18.0

于 2018-08-16T11:55:04.003 回答