Git误提交大文件推送失败,不想丢失本地修改该如何处理?
Git误提交大文件且不丢失本地修改的解决方案
核心原理
仅清理Git提交历史中的大文件记录,完全保留工作区所有现有修改,不需要执行任何会丢弃本地改动的重置操作。
操作步骤
- 第一步(可选但强烈建议):手动复制整个项目目录到本地其他路径做备份,避免操作失误导致文件丢失
- 第二步:回到提交大文件之前的提交状态,保留所有工作区修改
执行命令:# 查看提交历史,找到提交大文件之前的正常commit的哈希值(只需要前7位即可) git log --oneline # 重置HEAD到该正常提交,--mixed参数会保留所有工作区修改,仅清理暂存区和提交历史 git reset --mixed <你找到的正常commit哈希> - 第三步:将大文件加入
.gitignore,避免后续再次误提交
打开项目根目录的.gitignore文件,添加以下内容(如果没有.gitignore就新建一个):# 忽略本次误提交的大文件 largefile/*.tar.gz largefile/*.txt # 如果整个largefile目录都不需要跟踪,可以直接写下面这行 # largefile/ - 第四步:暂存正常修改,排除大文件的删除记录
执行命令:# 暂存所有变更 git add . # 将大文件的删除记录从暂存区移除,不纳入本次提交 git reset -- largefile/b_qty.tar.gz largefile/b_qty.txt largefile/s_qty.tar.gz largefile/s_qty.txt - 第五步:提交并推送
执行命令:# 提交正常变更 git commit -m "提交功能变更,排除大文件" # 推送到远程仓库 git push origin main
验证方式
提交前可以执行git status确认暂存区中没有大文件相关的变更,提交后执行git show HEAD --stat确认最新提交中没有包含误提交的大文件,再执行推送操作即可。
内容的提问来源于stack exchange,提问作者SecretAgent
相关产品推荐
相关产品推荐

