git lfs prune从lfs中删除文件并推送到origin

Arv*_*vin 4 git version-control bitbucket git-lfs

所以这就是发生的事情:

  1. 意外地提交了大量不合适的文件.
  2. git reset --soft HEAD~2在事故发生之前做了回复
  3. 修改gitignore忽略文件
  4. 再次下台并推向原点.

我假设git reset会从意外提交中撤消所有内容,但是在检查了bitbucket的git lfs文件列表之后,似乎所有来自意外提交的lfs跟踪文件都被推送到lfs in origin.如果我查看bitbucket中的源代码,这些文件就不存在了.

所以我试着git lfs prune删除一些看起来与意外提交的数量相关的文件git lfs push origin master.再次检查了bitbucket的git lfs文件列表,但这些文件仍然存在且原始状态没有任何变化.

我做错了什么?

Chr*_*ris 6

没有出现是这样做的标准方式:

Git LFS命令行客户端不支持从服务器修剪文件,因此删除它们的方式取决于您的托管服务提供商.

Bitbucket 允许您使用其Web UI删除LFS文件(在继续之前阅读整个链接页面):

从存储库中删除单个LFS文件

了解这一点很重要:

  • 这里描述的删除操作是破坏性的 - 没有办法恢复被删除的LFS指针文件引用的LFS文件(它不像git remove命令!) - 所以你需要先备份LFS文件.
  • 删除LFS文件只会将其从远程存储中删除.存储在Git仓库中的所有参考指针都将保留.
  • 今后没有分支,标签或修订版能够引用LFS文件.如果您尝试签出包含引用已删除的LFS文件的指针文件的分支,标记或修订,您将收到下载错误,并且签出将失败.

存储库管理员可以从存储库中删除Git LFS文件,如下所示:

  1. 转到repo的Settings页面,然后单击Git LFS以查看该repo中所有LFS文件的列表.
  2. 使用操作菜单删除LFS文件.

令人惊讶的是,从GitHub中删除LFS文件的唯一方法似乎是删除并重新创建存储库,丢失问题,星号,分叉以及可能的其他数据.

  • 谢谢!我在发布问题后不久就发现了该页面,并开始使用 bitbucket 的 LFS 管理工具来删除意外文件,但是由于我必须“git log”我想要删除的每个文件以确保它没有来自任何提交的引用,很明显,这将是一个非常漫长的手动过程。我不小心轻易提交了数百个文件。坐在这里一一删除这些文件确实不是一个很好的解决方案。我真的希望将来有更好的工具来管理LFS (2认同)