文件一直处于修改状态 git checkout 无法还原的问题解决方法

这篇具有很好参考价值的文章主要介绍了文件一直处于修改状态 git checkout 无法还原的问题解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述

  • 最近在 RT-Thread 时,使用 Git 回退版本验证问题,后来 git pull 拉取最新代码后,发现里面有几个文件,一直为【修改】状态,并且无法还原,git checkout xxx git reset --hard 都用了,依旧无法还原文件,也就是几个文件一直处于【修改】状态

  • 通过 file xxx 查看,这些文件是以回车换行符结尾的。

  • 通过 git add 发现这几个文件由于回车换行引起,全文件都提示修改,但是为何 git checkout 不能恢复呢?

git还原失败,技术杂谈,git无法还原,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还原失败,技术杂谈,git无法还原,git checkout

小结

  • 遇到因为回车换行造成的文件修改,并且使用 git checkout 或者 git reset --hard 都无法还原的文件的时候,建议使用 dos2unix 把文件改为 unix 格式,再配合 git reset --hard

  • git 使用起来还是比较的高效方便,便于代码的管理,一些高级的操作,可以慢慢积累文章来源地址https://www.toymoban.com/news/detail-594993.html

到了这里,关于文件一直处于修改状态 git checkout 无法还原的问题解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s集群namespace一直处于Terminating状态不释放解决办法

    Kubernetes中namespace有两种常见的状态,即Active和Terminating状态,其中Terminating状态一般会比较少见,当对应的命名空间下还存在运行的资源,但该命名空间被删除时才会出现所谓的Terminating状态,这种情况下只要等待Kubernetes本身将命名空间下的资源回收后,该命名空间将会被系

    2024年02月11日
    浏览(31)
  • k8s pod一直处于pending状态一般有哪些情况,怎么排查?

    一个pod一开始创建的时候,它本身就是会处于pending状态,这时可能是正在拉取镜像,正在创建容器的过程。 如果等了一会发现pod一直处于pending状态, 那么我们可以使用kubectl describe命令查看一下pod的Events详细信息。一般可能会有这么几种情况导致pod一直处于pending状态: 1、

    2024年01月17日
    浏览(49)
  • 云原生|kubernetes|删除不掉的namespace 一直处于Terminating状态的解决方案

    在kubesphere部署的过程中,由于kubernetes集群的版本和kubesphere的版本不匹配,因此想要回退重新部署,但发现要用的namespace  kubesphere-system 普通的删除方法无效,一直处于 Terminating状态 新部署由于namespace一直是删除状态,无法继续进行: 具体表现为一直挂在删除界面: 下面就

    2024年02月09日
    浏览(35)
  • 【Docker】解决docker-compose启动的容器一直处于restarting状态的问题

    通过如下的文件启动容器后 status一直处于Restarting 且执行如下命令报错: 改成如下后解决 参考:https://stackoverflow.com/a/63990209

    2024年02月11日
    浏览(39)
  • [eNSP]解决路由器以及交换机一直处于##,无法启动的问题

            相信大家在使用华为模拟软件eNSP的过程中,光是搭建环境都花费了不少时间吧,废话也不多说,基本的软件搭建顺序为WinPcap(4.1.3),Wireshark(2.6.6),VirtualBox(5.2.44),eNSP 1.3.00.100以上版本号不绝对,仅限我个人安装。对应的安装包会放入文章末尾的网盘中,

    2024年02月11日
    浏览(79)
  • Git push长时间无反应或处于等待状态

    我的情况: 一直处于此界面(我甚至把电脑开了一晚上仍然是这个界面) 找遍了国内国外网站,最终以下方法解决: 打开搜索-凭据管理器-Windows凭据 在普通凭据下找到github相关凭据并删除(没有就跳过这步): 找到你想要push的文件目录,按住shift再右击空白处,调出Powe

    2024年02月16日
    浏览(33)
  • k8s部署解成功解决node节点一直处于NotReady状态的问题,报错failed to load Kubelet config file /var/lib/kubelet/config.yaml

    我在部署k8s的时候host1节点一直显示NotReady 报错便报,直接经典看日志解决问题思路哈哈哈 看日志找报错点,找问题解决问题,思路一定要清晰。 在host1节点中查看报错信息,代码: 由日志信息可知,报错原因是不能从/var/llib/kubelet/config.yaml下载到kubelet的配置。 错误原因估计

    2024年02月11日
    浏览(37)
  • GIT - checkout指定head的某个文件

    可以使用如下命令: 其中  commit  是要检出的目标提交的 SHA-1 标识符或分支名称,  path/to/file  是要检出的文件路径。这个命令会将指定提交中的指定文件覆盖当前工作目录中的同名文件,并将文件的更改提交到暂存区域。 如果只需要查看文件而不是将其检出到工作目录中

    2024年02月02日
    浏览(37)
  • Git checkout 某个版本到指定文件夹下

    我不想checkout到覆盖本地工作区的文件, 而是想把该 版本checkout到另外一个文件夹下,检出看看,这个文件夹不被git管理 将 commit_hash 替换为你想要检出的具体commit的哈希值,new_folder 替换为你想要保存文件的新文件夹路径。 这条命令会创建一个对应版本的tar临时归档文件,

    2024年02月08日
    浏览(38)
  • Github 下载指定文件夹(git sparse-checkout)

    比如要下载这里的 data_utils 1、新建空文件夹,并进入新建的空文件夹。 2、 git init 初始化 3、 git remote add origin 添加远程仓库 4、 git config core.sparsecheckout true 允许稀疏检出 5、 git sparse-checkout set 设置需要拉取的文件夹(可以同时拉取多个,中间加空格即可) 6、 git pull origin

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包