合并master分支误删package-lock致PR删除行数虚高该如何解决
解决方案
提交未推送至远程仓库
- 回退最近一次提交且保留工作区改动:
git reset --soft HEAD~1 - 恢复被误删的package-lock文件:
git checkout HEAD -- package-lock.json - 重新提交代码改动即可,新提交不会包含package-lock的删除记录,PR统计会自动恢复正常。
如果误删提交之后已有多次新提交,不想改动后续提交内容,可使用交互式变基修正:
- 执行命令:
git rebase -i <误删提交的前一个commit哈希值> - 在弹出的编辑界面中,将误删提交对应的行前缀从
pick修改为edit,保存退出 - 执行恢复命令:
git checkout HEAD -- package-lock.json - 执行
git commit --amend提交修正内容 - 完成剩余变基流程:
git rebase --continue
提交已推送至远程仓库
允许强制推送特性分支(PR未合并)
- 先按照上述本地修正方案调整本地提交记录
- 强制推送覆盖远程分支:
git push origin <你的特性分支名> -f - 刷新PR页面后,删除行数统计会自动更新,虚高数值会被清除。
不允许强制推送/不想修改原有提交记录
- 直接在当前分支恢复正常的package-lock文件:
git checkout <任意包含正常package-lock的commit哈希值> -- package-lock.json - 提交该恢复改动并推送到远程即可,PR的总行数统计会自动抵消之前的删除记录,最终净删除行数回归正常。该方案仅会在提交历史中多出一条恢复package-lock的记录,不影响最终代码合并结果。
长期优化方案
可通过配置git规则避免后续自动生成的大文件变动影响行数统计:
- 在项目根目录新建
.gitattributes文件,添加内容:package-lock.json diff=lockfile - 执行本地git配置:
git config diff.lockfile.binary true
配置完成后git会将package-lock识别为二进制文件,不再统计它的增删行数,从根源避免同类问题。
内容的提问来源于stack exchange,提问作者Siddu Palaparthi
相关产品推荐
相关产品推荐

