将git lfs存储库重置为指针

将git lfs存储库重置为指针,git,git-lfs,Git,Git Lfs,我签出了一个存储库。所有二进制文件都是指针。我使用git lfs pull拉取了真正的二进制文件——包括一些/binaries 我使用了二进制文件,现在我想“取消”二进制文件并再次将它们转换为指针,这样我就可以回收磁盘空间 我找不到任何合适的命令来做这件事,而使用.git/lfs/objects加上硬重置使我感到紧张 问题:如何将跟踪的二进制文件转换回指针 编辑: 我刚刚找到一个开放的功能请求: 正如您提到的,它还没有在git LFS中实现。Git LFS用户正在使用脚本来实现相同的功能。这

我签出了一个存储库。所有二进制文件都是指针。我使用git lfs pull拉取了真正的二进制文件——包括一些/binaries

我使用了二进制文件,现在我想“取消”二进制文件并再次将它们转换为指针,这样我就可以回收磁盘空间

我找不到任何合适的命令来做这件事,而使用.git/lfs/objects加上硬重置使我感到紧张

问题:如何将跟踪的二进制文件转换回指针

编辑:

  • 我刚刚找到一个开放的功能请求:

正如您提到的,它还没有在git LFS中实现。Git LFS用户正在使用脚本来实现相同的功能。这里有一个是从你的链接中提取的

#/bin/bash
lfs_文件=($(git lfs ls文件-n))
对于“${lfs_files[@]}”中的文件;做
git cat file-e“HEAD:${file}”和&git cat file-p“HEAD:${file}”>“$file”
完成
rm-rf.git/lfs/objects

它只是创建一个由git-lfs-ls-files返回的所有文件的列表,并遍历该列表,以其指针替换该文件。最后一行从本地存储库中删除所有git LFS对象。

它将文件转换回指针。 就像undo
git lfs pull
。 :-)

#/bin/bash
#参考:https://github.com/git-lfs/git-lfs/issues/1189#issuecomment-348013275
#参考:https://sabicalija.github.io/git-lfs-intro/
如果[$#-eq 0];然后
echo“无输入:退出”
出口1
fi
cur_size=$(du-sh.|awk-F“{print$1}”)
对于$@中的bfile;做
#指向指针
#打印文件大小
f_size=$(du-sh$bfile | awk-f“{print$1}”)
mv$bfile$bfile.bak
cat$bfile.bak | git lfs clean>$bfile
rm$bfile.bak
pt_size=$(du-h$bfile | awk-F“{print$1}”)
printf“%-30s:$b文件
printf“%s”$f\u大小
printf“->%s\n“$pt\u大小
#删除.git中的缓存
hash_值=$(类别$bfile | grep oid | cut-d):“-f 2)
缓存路径=$(查找。| grep$哈希值)
如果[-z${cache_path}];然后
printf“#警告#在缓存中找不到oid:%s\n”$hash\u值
其他的
rm$cache\u路径
printf“>>修剪的缓存位于:%s\n“$cache\u路径
git签出--$bfile
fi
完成
#报告结果
在_size=$(du-sh.| awk-F“{print$1}”之后)
printf“完成:当前目录大小收缩”
printf“(%s“$cur\u大小
printf“->%s)。\n“$在\u大小之后
出口0