git checkout 无法还原的因回车换行造成的文件修改问题的解决方法

在处理RT-Thread项目时,遇到git下的文件始终显示为‘修改’状态,无法通过常规的gitcheckout或gitreset--hard恢复。问题根源是回车换行格式问题。解决方案是使用dos2unix工具将文件转换为Unix格式,然后使用gitreset--hard,成功解决了问题。这种方法在面对git高级操作时展现出高效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

  • 最近在 RT-Thread 时,因为回退版本验证问题,发现里面有几个文件,一直为【修改】状态,并且无法还原,git checkout xxx git reset --hard 都用了,依旧无法还原文件

  • 通过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 使用起来还是比较的高效方便,便于代码的管理,一些高级的操作,可以慢慢积累

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值