git reflog -n 10 git reset --hard ORIG_HEAD git log --oneline -8
整理提交时把中间一条 pick 改成了 drop,rebase 顺利完成,那条提交带的接口改动也没了。构建通过,测试却报方法不存在。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,drop 是连同提交和改动一起丢掉,不是只去掉提交信息。rebase 会重写后面的提交,原来那条只能从 reflog 或 ORIG_HEAD 里找回来。
这次卡住的地方就在「rebase 误删提交」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
处理上按这个顺序:git reflog 找到 rebase 前的 HEAD 记录哈希;rebase 还没结束时直接 git rebase --abort;已经结束就 git reset --hard ORIG_HEAD 回到操作前;恢复后用 git log --oneline 核对提交条数;只想改信息用 reword 不要用 drop。
改完只确认一件事:提交条数和 rebase 前一致 缺失的方法重新出现在代码里。
