如何移除分支或Pull Request中所有ESLint与Prettier的变更?
解决本地Lint/格式化设置覆盖项目导致PR大量无关变更的问题
一、撤销已产生的无关变更
1. 无关变更尚未提交
- 先单独暂存你的真实代码修改:
- 若明确知道哪些文件是自己实际修改的,直接用
git add 文件名添加这些文件; - 不确定的话用
git add -p进入交互式暂存模式,逐条确认并挑选真实的代码变更块,跳过格式化产生的无关行。
- 若明确知道哪些文件是自己实际修改的,直接用
- 撤销所有未暂存的格式化变更:执行
git checkout -- .,这条命令会将所有未暂存的文件恢复到仓库当前的最新提交状态,彻底清除自动格式化带来的修改。 - 最后提交暂存的真实变更即可。
2. 无关变更已提交到本地分支
- 使用交互式rebase拆分/修正提交:
- 执行
git log查看提交历史,找到引入格式化变更之前的干净提交,记下它的哈希值(比如a1b2c3)。 - 运行
git rebase -i a1b2c3,进入交互式rebase编辑界面。 - 将包含格式化变更的提交行开头的
pick改成edit,保存并退出编辑器。 - 仓库会回退到该提交状态,执行
git reset HEAD^撤销该提交的所有修改;接着用git add -p重新挑选真实变更并提交;最后运行git rebase --continue完成rebase。
- 执行
- 如果真实变更和格式化变更混在同一个提交里,也可以直接用
git reset HEAD^撤销整个提交,重新筛选真实修改后再提交。
二、后续避免重复踩坑的配置
- 在VS Code中切换到工作区设置(左下角设置图标 → 工作区设置),针对当前项目单独配置:
- 确保ESLint插件读取项目根目录的
.eslintrc(或其他ESLint配置文件),而非全局设置;可关闭全局ESLint启用开关,只在工作区启用。 - 关闭「Editor: Format On Save」自动格式化,或者配置仅当项目有明确格式化规则时才启用。
- 若项目后续引入Prettier,记得在工作区设置中指定使用项目的Prettier配置文件。
- 确保ESLint插件读取项目根目录的
内容的提问来源于stack exchange,提问作者FlowRan
相关产品推荐
相关产品推荐

