Git LFS无法工作

4

我遇到了Git LFS无法正确跟踪我的大文件的问题(类似的问题在此处报告:Git LFS refused to track my large files properly, until I did the following)。

在我的特定情况下,我正在尝试推送由多个子目录组成的目录,每个子目录都有特定类型的文件需要跟踪。这些文件类型的扩展名是 .bed, .Bed, 和 .sorted。我按照以下步骤进行操作:

我执行了git add .,然后执行git commit -m“initial commit”,接着发出相应的跟踪命令(例如,git lfs track“.bed”),然后执行git push origin master

但是,我仍然收到多个错误命令,最终以“this exceeds GitHub's file size limit of 100.00 MB”结束。我已经阅读了几乎所有关于此主题的可用Stack Overflow文章(如git lfs not working properly for files larger than 100MB),所以任何建议都将不胜感激。

3个回答

0

基于这些说明, 首先你需要跟踪, 然后才能添加提交。我按照类似的指示在Bitbucket上操作成功了。

如果在跟踪之前添加提交,那么你可能会在你的repo而不是lfs repo中提交。


1
你在重新添加文件之前是否将其从树中删除?您可以使用git rm --cached filename执行此操作。然后继续进行git add file.bed和git commit。 - coelhudo
我完美地按照Github的指示操作,但当到了git push origin master的时候,我收到了以下信息:Git LFS: (0 of 671 files, 100 skipped) 0 B / 8.88 GB, 2.84 GB skipped,然后是一个U(不知道这是什么意思!),接着是一行重复的Git LFS: (0 of 671 files, 100 skipped) 0 B / 8.88 GB, 2.84 GB skipped。程序就像卡住了一样,什么也没有发生,所以我只能强制使用ctrl-c来退出。请注意,我确实可以成功从git lfs ls-files中获得输出,因此我已经将问题缩小到了最后一步。可能出了什么问题? - warship
我进行了一些测试,它在这里运行良好,但仅适用于小于100MB的文件。我无法复制跳过文件的情况。然而,您所描述的错误与100MB限制有关。这里说100MB是硬限制,在这种情况下不允许推送。您尝试过推送较小的文件吗? - coelhudo
3
Git LFS 的目的不就在于通过指针推送大于100MB的文件吗? - warship

0
如果您需要删除所有缓存文件,因为您有很多大文件,则可以使用以下命令:
git rm -r --cached .

确保包含句点以表示您希望所有文件不被缓存。


0

我曾经遇到过完全相同的问题。后来我意识到,这些大文件确实是通过lfs上传的,就像显示的“....skipped...”一样。但是这些大文件仍然存在于git提交历史中。 我解决它的方法是使用git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch <file/dir>' HEAD(请注意,您需要用您的大文件的文件名替换<file/dir>)。这将在历史记录中过滤掉您的大文件记录。之后,我可以git push origin master,不再出现错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接