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

如何恢复PythonAnywhere上误删的Git提交?

解决PythonAnywhere上Git误操作+磁盘满导致的Django项目恢复问题

一、先解决磁盘满的问题(git命令失败的直接原因)

磁盘满是导致fatal: unable to write new index file错误的核心原因,必须先释放空间:

  • 查看磁盘占用详情:
    执行 df -h 确认磁盘挂载点,再在项目目录和根目录执行 du -sh *,定位占用空间大的文件/目录
  • 优先清理冗余内容:
    1. 清理Git冗余对象:在项目目录执行 git gc --prune=now,这会删除Git中无用的旧提交对象、缓存,快速释放空间
    2. 删除临时文件:执行 rm -rf /tmp/*(PythonAnywhere的临时文件目录,不会影响项目运行)
    3. 清理日志文件:找到项目内的Django日志(如logs/目录)或PythonAnywhere的web日志,删除旧的大体积日志文件(保留最近的日志即可)
    4. 删除无用大文件:比如下载的安装包(.tar.gz/.whl)、过期备份文件等,确认无用后删除

完成后执行 df -h 确认磁盘至少有几百MB可用空间。

二、恢复误删的Git提交

磁盘空间正常后,按以下步骤恢复项目版本:

  1. 查看本地Git操作记录:执行 git reflog,找到执行 git reset --hard HEAD~1 之前的目标提交SHA值(对应条目类似 abc1234 HEAD@{2}: commit: 修复XX功能,前面的字符串就是SHA值)
  2. 恢复到正确版本:执行 git reset --hard <找到的SHA值>,本地项目会立即恢复到误操作前的状态
  3. 同步到远程仓库:执行 git push --force,覆盖远程仓库的错误版本,将正确的提交推送回去

补充说明

  • 磁盘突然占满的原因:Git执行reset后,旧的提交对象不会立即被删除,会暂时存储在Git对象库中,加上操作生成的临时文件,导致空间占用激增。你删除的单个文件可能不足以抵消这些新增占用,所以仍显示100%满
  • 后续建议:尽量避免直接使用git push --force,如需回退远程提交,先确认本地reflog有完整操作记录,或提前备份远程仓库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 11:17:29