You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Desktop报fatal: bad ref refs/tags/desktop.ini如何修复

GitHub Desktop持续报bad ref desktop.ini错误修复方案

问题表现

  • 运行对应仓库时持续抛出fatal: git show-ref: bad ref refs/tags/desktop.ini错误,错误弹窗持续堆叠,后台运行时可累积数十个弹窗,存在交互设计缺陷。
  • 执行提交、推送操作时触发系列报错:
    • error: cannot lock ref 'refs/remotes/origin/desktop.ini': unable to resolve reference 'refs/remotes/origin/desktop.ini': reference broken
    • error: could not remove reference refs/remotes/origin/desktop.ini
    • 推送阶段输出[deleted] (none) -> origin/desktop.ini、fatal: bad object refs/desktop.ini、error: 对应远程仓库 did not send all necessary objects
  • 已尝试执行git fetch、git remote prune origin命令修复,问题未解决。

修复步骤

1. 删除本地损坏的零散引用文件

Git的引用默认以文件形式存储在仓库.git/refs目录下,直接删除所有和desktop.ini相关的损坏引用即可:
在仓库根目录打开Git Bash/终端,执行以下命令:

# 删除标签目录下的损坏引用
rm .git/refs/tags/desktop.ini
# 删除远程分支缓存目录下的损坏引用
rm .git/refs/remotes/origin/desktop.ini
# 删除根引用目录下的错误desktop.ini引用
rm .git/refs/desktop.ini

Windows系统如果执行命令提示找不到文件,可以直接打开仓库的隐藏.git目录,进入对应路径手动删除存在的desktop.ini文件。

2. 清理打包引用文件里的损坏条目

部分引用会被打包到.git/packed-refs文件中,用文本编辑器打开这个文件,找到所有内容包含desktop.ini的行,整行删除后保存文件。

3. 重置引用并校验仓库完整性

回到终端执行以下命令,完成引用重置和仓库校验:

# 全量校验本地仓库对象完整性
git fsck --full
# 强制拉取远程最新引用,覆盖本地错误缓存
git fetch origin --prune --force
# 再次清理无效的远程跟踪分支
git remote prune origin

执行完成后在终端测试git show-ref命令,确认没有报错即可。

4. 恢复GitHub Desktop正常运行

完全退出GitHub Desktop进程后重新打开,加载对应仓库就不会再持续弹出错误窗口。如果仍有异常,可以在GitHub Desktop顶部菜单选择「Repository」-「Open in Git Bash」,确认终端下Git操作无报错后重启软件即可。

预防方案

这个问题的根因是Windows系统自动生成的desktop.ini系统配置文件被误识别为Git引用,甚至被误推送到远程仓库导致的。后续可以在仓库.gitignore文件中添加一行desktop.ini,提交时自动忽略该系统文件,避免同类问题复发。

内容的提问来源于stack exchange,提问作者ChungaBunga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.04 16:15:42