基于git的场景解决

66 阅读1分钟

场景-推送远程仓库的代码被prettier大范围格式化

场景描述

  • vscode配置了格式化工具prettier、失去焦点自动保存和保存时自动格式化。在项目中开发新功能时,被查看的旧代码自动格式化,推送了3次提交,记录中会显示大范围的更改,不方便review。
  • 现在需要保持结构,同时清除格式化内容。

技术背景

  • git

方案解决

  • 本地vscode中取消失去焦点自动保存和保存时自动格式化等设置。
  • 修改历史方案
    • git rebase -i HEAD~3
      • 修改最近3次提交。
      • 在显示的编辑器中将最近三次提交的标识“pick”改为“edit”,退出编辑器。
      • 此时 本地commit回退到三次提交中的第一次提交
    • 修改
      • git add -p 选择保留修改。
        • 可配置vscode为git的编辑器。
      • 或 查看第一次提交中更改,复制粘贴为第一次提交之前的代码,将自己的修改逐个粘贴。
    • git status
      • 查看修改文件
    • git add ...
      • 将更改重新添加
    • git commit --amend
      • 修正历史提交
    • git rebase --continue
      • 处理下一个提交
      • 迭代上述步骤
    • git push --force-with-lease origin [branch-name]
      • 将本地commit变更同步到远程,覆盖远程历史。

参考资料