【问题标题】:How to Ignore Git LFS Unable to Find Source如何忽略 Git LFS 无法找到源
【发布时间】:2019-12-16 10:58:33
【问题描述】:

我得到了一个带有 LFS 的旧存储库,但是一些(可能是旧的)文件丢失了,所以我无法推送:

git push -u origin
Locking support detected on remote "origin". Consider enabling it with:
  $ git config lfs.https://gitlab.com/gitlabaccount/repo.git/info/lfs.locksverify true
Unable to find source for object 43cb9e6d1d15bb8d31af911aa69a15a67174c5 (try running git lfs fetch --all)                                                                                                                                           
Uploading LFS objects:  87% (600/691), 546 MB | 0 B/s, done
error: failed to push some refs to 'git@gitlab.com:gitlabaccount/repo.git'

据称我的同事运行了git lfs fetch --all,但并没有解决问题。

我真的很想要一份最新的、所有历史的副本,以及一个现在可以运行的版本。我并不真正担心旧文件,我的偏好是完成推送并丢失一些丢失的 lfs 文件,但 lfs 错误不会让我这样做。

Gitlab 将允许我在项目中禁用 lfs,但我不知道如果我这样做,大小/限制会发生什么。不确定在服务器或客户端上启用然后禁用它的正确过程是什么。或者,推送是否有“忽略丢失的文件”选项?

【问题讨论】:

  • 我认为您不能禁用此检查。如果您没有这些 LFS 指针的文件,您将不得不重写项目的历史记录以不包含它们。
  • @bk2204 我已使用 bitbucket 的 for i in ls;do echo $i; cd $i; git log --all -p -S 43cb9e6d1d15bb8d31af911aa69a15a67174c5; cd -;done 将文件识别为在先前提交中来来往往但当前不存在的文件。像git filter-branch --force --tree-filter 'rm -f path/to/big_file.mpg' HEAD 这样的东西就足够了吗? (community.atlassian.com/t5/Bitbucket-questions/…)
  • 如果所有丢失的 LFS 对象都是该路径的实例,那么是的,如果将 HEAD 替换为 --all 就足够了。
  • @bk2204 请注意,对于-- --all,替换可能应该是HEAD。此外,在这种情况下,显然有多个文件失败。我的想法是将新路径添加到rm -f file1 file2 file3 命令

标签: git gitlab push git-lfs


【解决方案1】:

你可以在下面忽略它,它会忽略git lfs的pre-push hook

git push --no-verify

【讨论】:

    猜你喜欢
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 2020-11-29
    • 2017-05-05
    • 2011-09-11
    • 1970-01-01
    • 2022-06-14
    相关资源
    最近更新 更多