如何清理混乱的本地与远程Git仓库并保留代码修改?
解决方案
第一步:暂存当前所有未提交修改
先把本地所有暂存、未暂存、未跟踪的文件临时保存,确保修改不丢失:
git stash push -m "temp_save_all_changes"
执行后可用 git stash list 确认保存记录。
第二步:彻底清理提交历史中的大体积.exe文件
使用git filter-repo(Git 2.22+ 官方推荐工具,替代老旧的filter-branch)重写历史,彻底移除目标.exe文件的所有痕迹:
git filter-repo --path 你的大文件名称.exe --invert-paths
替换你的大文件名称.exe为实际文件名,执行后仓库历史会被完全清理。
第三步:强制推送清理后的历史到远程
由于提交历史已被修改,需要强制覆盖远程对应分支:
git push origin Improve_percentile_separation --force-with-lease
--force-with-lease比单纯--force更安全,能避免意外覆盖他人未同步的修改。
第四步:恢复本地修改
将之前暂存的所有修改恢复到工作区:
git stash pop
若恢复时出现冲突,手动解决冲突后提交即可。
后续预防
在仓库根目录创建.gitignore文件,添加规则避免后续误提交可执行文件:
echo "*.exe" >> .gitignore git add .gitignore git commit -m "Add .gitignore to exclude exe files" git push origin Improve_percentile_separation
内容的提问来源于stack exchange,提问作者Rainer Bärs
相关产品推荐
相关产品推荐

