由于硬件方案的更换,需要去掉一些外设改用mcu内部实现,而这种mcu实现的方式在之前已经做过了,所以想直接回滚代码到对应的版本。但是由于时间间隔太长,后面固件已经新增了其它功能,这些功能需要被保留下来。
使用git log找到之前的版本,记录下版本编号,假如是3e4d37f
在命令行输入以下命令,得到历史版本到当前版本有差异的文件清单,并保存为diffFiles.text文件(⚠️注意将版本编号替换为实际版本编号)
git diff 3e4d37f | grep 'diff --git' | awk '{print $3}' > diffFiles.text
文件内容大概这样,建议使用替换工具去掉开头的a/
复制一个文件名,按Ctrl + P
(OSX 是command + P
)打开文件。然后打开左下角时间线视图,找到对应的版本再点击选择以进行比较
,再点击最新一个版本选择与已选项目进行比较
。这时候会出来一个当前文件与要回滚版本文件的差异对比,工具差异对比修改当前文件,完成后回到diffFiles.text
文件进行标记(比如文件名后面写个👌)。
重复上一步,直到所有涉及到的文件都修改完毕,最后记得删除diffFiles.text
文件。
就算是现代的版本管理工具如此好用,同时修改很多不相关的文件也很麻烦,并且很容易出错。
希望读者朋友在遇到此类问题的时候谨慎处理,修改后进行review或者对可能影响到的模块进行集成测试。
当然,更希望你们接到类似需求的时候就能及时发现问题,选择一种最正确的方式开发,而不是像我一样回滚代码。