ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

git丢弃本地改动文件时提示“error: path “file_paht“ is unmerged”的解决方案

2021-11-11 11:02:10  阅读:211  来源: 互联网

标签:paht git 本地 改动 丢弃 文件 file 分支


背景

        git管理应用过程中遇到这样一个问题。发现之前提交的一版方案有问题,但是它暂时处在一个dev分支,master分支为我这边的生产分支。因此想着在dev分支上直接修复之后push回dev后再测。但是发现这个问题不容易那么快的解决,于是就把这部分修复内容单独提了一个新的独立分支来解决这个问题。

        后来在这个新的分支上排查出问题后发现只需要一行代码就能解决这个问题,但是这个分支的改动在排查过程中过于剧烈,不忍重整。于是就想着直接丢弃这个分支(删除本地以及远程的这个分支)切换到dev分支直接做一个单步异常处理的提交来结束这个问题。

        此时发现无法切换,提示我没有merge。因为我不想要本地的所有修改,所以为了方便,想要直接丢掉本地的改动,此时就提示我没有merge。

        最终我要做的就是丢掉这些本地的修改,切换其他分支。

问题

        git丢弃本地改动文件时提示“error: path "file_paht" is unmerged”该如何处理?

说明

        提示这个错误的原因是因为你所要丢弃的文件已经在缓存区了,此时在你的本地git存档中相当于有案底,你跑不了。那如果你想要强行完成任务,把这个文件的改动丢弃,就需要把这份案底处理掉。那么也就是把进入到缓存区的存档记录清除掉,很显然这个操作可并没有你去军政单位清空你案底那么艰巨。因此我们仅仅只需要一条命令就能够完成,然后你再次执行丢弃该文件的修改命令,就可以正常完成了。后面我会在纪要中来详细的列举出对应的操作步骤!

纪要

初步发现问题

        git diff --stat

        上面这个命令的作用:比对本地停留的分支和其跟踪的远程分支的内容是否一致,都有哪些文件在本地进行了修改。如果有改动,则以列表的形式展现出来。如果没有改动,就返回空行输出。

        其实这里已经提示了这个文件有改动,并且没有merge。因此存在两个版本的差异。

 正式确诊问题

        git checkout .

        上面这个命令的作用:丢弃本地的所有改动内容,恢复到此分支同其跟踪分支相同的状态。“.”表示匹配所有的改动文件。

        如果想要丢弃指定的某个文件,则可以指定具体的文件路径来定点清除。如:git checkout /home/git/over/file.txt

        此时就正式出现了我们开篇提到的问题,如下图:

解决问题

第一步

        那么出现这个问题的原因是因为你这个文件在缓存区有一份,而且还比跟踪的远程分支低个版本,因此要么你pull一下拉取最新,然后合并提交。要么遇到我这种情况啥都不想要的,就像干掉它。

        清楚了问题所在,那就把缓存区的这份存档清除掉,然后再丢弃。如下图:

        git reset [file_path]

        上面这个命令是丢弃已经add进入缓存区的数据文件。相关的命令文档可以查看这篇博文:GIT常用命令_大雷-CSDN博客_git常用命令GIT常用命令1git config --list查看全局配置。2git initdoc命令进入指定的目录层级后,执行此命令,会在该目录下初始化git相关配置数据。3git init [project_name]doc命令进入指定的目录层级后,执行此命令,会帮你创建一个对应项目名称的文件目录,并且在其中初始化git相关的配置数据。4git branch dev新建分支dev。5git branch查看https://blog.csdn.net/dalei9243/article/details/120201591

第二步

        解决问题最重要的就是小碎步,有效果,坚持不懈。

        上面的操作主要是将缓存中的留档清除掉,这里我们要进行验证一下,到底有没有处理成功。如下图:

        可以看到对比之前的diff现在只剩下了我们的改动的项,而原来merged的那项已经通过上一步成功处理掉了。

第三步

         下面就是最后的一步操作,丢弃这些修改内容。由于我这里比较原子化,没有多余的内容是不能提交的或保留的,所以可以直接全部清除。如果你遇到的情况是部分文件还需要保留,那执行这条命令的时候需要一个个文件的去丢弃。如下图:

第四步

         验证复测是交付中必不可缺的一环,因此事件虽小,但责任必须到位。这里再次进行确认,处理是否成功,看本地是否还有修改的内容。如下图:

        此时可以看到,本地已经没有任何改动的文件。

第五步

        解决个人问题。

        上面的操作是针对于此次我要执行操作中遇到问题的解决方案,问题解决之后此时需要完成开篇的任务:切换分支。

        之所以单独把对于读者来说不关心的这一步拎出来说明,是因为切换分支的命令和上面的清空本地改动项的命令有点相似,所以重点说明一下。如下图:

        git checkout [feature_name] 

        上面的命令能够让你在不同的分支之间进行切换。

 至此,此篇博文讲述完毕!

标签:paht,git,本地,改动,丢弃,文件,file,分支
来源: https://blog.csdn.net/dalei9243/article/details/121261514

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有