问题描述
- 最近在 RT-Thread 时,使用 Git 回退版本验证问题,后来
git pull
拉取最新代码后,发现里面有几个文件,一直为【修改】状态,并且无法还原,git checkout xxx
git reset --hard
都用了,依旧无法还原文件,也就是几个文件一直处于【修改】状态 - 通过
file xxx
查看,这些文件是以回车换行符结尾的。 - 通过
git add
发现这几个文件由于回车换行引起,全文件都提示修改,但是为何git checkout
不能恢复呢?
解决思路
- 为了还原恢复这几个【顽固】的被修改文件,我尝试了几种方法
第一种方法
-
git reset --hard commit_id
,这里的commit_id
要改为这几个文件提交前的 位置,在一些git 提交记录达到 几千几万的时候,这个方法很低效,并且可能还需要多次尝试 - 总结:不如直接拉取工程代码来的实惠。
第二种方法:
- 删除工程,重新拉取新的代码。
- 总结:不推荐,这样的操作,当前工程下一些未提交的本地代码就丢掉了。
第三种方法
- 推荐的方法:安装 dos2unix 工具,当前确认在 Linux 环境下,测试通过
- 如果没有 dos2unix,需要安装
$ sudo apt install dos2unix
- 操作流程
$ dos2unix bsp/imxrt/libraries/MIMXRT1170/MIMXRT1176/drivers/fsl_dac12.h
$ dos2unix bsp/imxrt/libraries/MIMXRT1170/MIMXRT1176/drivers/fsl_lpadc.h
$ git reset --hard
- 以上操作后,再次运行 git status,发现【顽固】的已修改文件消失了,问题解决
小结
- 遇到因为回车换行造成的文件修改,并且使用
git checkout
或者git reset --hard
都无法还原的文件的时候,建议使用dos2unix
把文件改为 unix 格式,再配合git reset --hard
。 - git 使用起来还是比较的高效方便,便于代码的管理,一些高级的操作,可以慢慢积累
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 《现代JavaScript高级教程》深入理解Proxy
点击在线阅读,体验更好 链接 现代JavaScript高级小册 链接 深入浅出Dart 链接 现代TypeScript高级小册 链接 深入理解Proxy 在现代JavaScript中,Proxy是一种非常有用的特性,它允许我们在许多常规操作中插入自定义行为。然…