如何撤销my-branch分支最近两次Git提交且不丢失修改?
解决Github推送因大文件历史被拒的方法
问题根源:你虽然删除了大zip文件,但之前提交记录里仍包含该文件,Github会检查整个提交历史的文件大小,所以推送依旧被拒。以下是两种可行的解决办法:
方法一:修改最近两次提交(交互式变基)
- 执行命令:
git rebase -i HEAD~2,此时会打开一个文本编辑器显示最近两次提交 - 在编辑器中,将添加大zip的那次提交(第一行,格式类似
pick xxxxxxx add long zip)的pick改为drop,或者直接删除该行;也可以将删除zip的提交改为squash/fixup,和前一次提交合并,这样历史里就不会留下大文件记录 - 保存并退出编辑器,Git会自动重构提交历史
- 最后强制推送分支到远程:
git push --force origin my-branch
方法二:重置到添加大文件前的提交,重新提交
- 先查看提交历史获取目标哈希:
git log --oneline,找到添加大zip之前的那个提交的短哈希(比如abc123) - 执行软重置保留修改:
git reset --soft abc123,这会撤销后面两次提交,但所有修改都会保留在工作区 - 确认大文件已被移除后,重新提交:
git commit -m "你的提交描述" - 推送分支到远程:
git push origin my-branch
注意事项
- 操作前建议备份分支:
git branch my-branch-backup,以防操作失误丢失内容 - 使用
--force推送时,确保没有其他协作者在my-branch上工作,避免覆盖他人的修改
内容的提问来源于stack exchange,提问作者Ankur Singh
相关产品推荐
相关产品推荐

