解决 Git LFS 切换分支失败问题

场景描述

在本地已有分支 A 的情况下,目前工作在分支 B。当尝试从 B 分支切回 A 分支时,由于 A 分支存在 LFS 上传的大文件,导致切换失败。这个问题通常是因为某些 LFS 文件在服务器上不存在或没有权限访问。

报错日志

切换分支时遇到的错误日志如下:

Error downloading internal/rdb/dump.rdb (852c652352e4ac590e4002b42849c82a4bae3c962cce5c0f774dc132c3436058): [852c652352e4ac590e4002b42849c82a4bae3c962cce5c0f774dc132c3436058] Object does not exist on the server or you don't have permissions to access it: [404] Object does not exist on the server or you don't have permissions to access it

Errors logged to '/Desktop/.git/lfs/logs/20240926T173103.764992.log'.
Use `git lfs logs last` to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: internal/rdb/dump.rdb: smudge filter lfs failed
解决办法

为了成功切换回分支 A,并处理 LFS 文件的问题,可以按照以下步骤操作:

  1. 忽略 LFS 报错并强制切换分支

    由于 LFS 文件的问题导致无法正常切换分支,我们可以通过忽略 LFS 报错并强制切换分支来解决这个问题。执行以下命令:

    GIT_LFS_SKIP_SMUDGE=1 git checkout -f A
    

    这里,GIT_LFS_SKIP_SMUDGE=1 用于忽略 LFS 文件下载错误,-f 用于强制切换分支。

  2. 删除 LFS 的大文件提交

    切换到分支 A 后,如果确认不再需要 LFS 的大文件,可以删除这些文件的提交记录。具体操作如下:

    git rm --cached docker/RedisShake/internal/rdb/dump.rdb
    git commit -m "Remove large LFS file"
    

    这将从 Git 历史记录中删除该文件,但不会从工作目录中删除它。

  3. 推送更改

    最后,将更改推送到远程仓库:

    git push origin A
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值