当前位置:   article > 正文

git报 “The stash entry is kept in case you need it again“ 错误解析_the stash entry is kept in case you need it again.

the stash entry is kept in case you need it again.

本地对10个文件做了修改, 并希望通过commit命令将本地的修改推送到远程分支上.

commit前拉取最新代码时的报错
先在本地执行git pull来拉取&更新git远程分支上的最新代码时, 报了如下错误:

error: Your local changes to the following files would be overwritten by merge: project-1/src/main/scala/com/david/service/OrderMicrobatchStat.scala

详细报错log如下:

D:\IdeaProject-ws-2\project-1\module-1>git pull
remote: Enumerating objects: 27, done.
remote: Counting objects: 100% (27/27), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 14 (delta 10), reused 0 (delta 0)
Unpacking objects: 100% (14/14), 1.06 KiB | 2.00 KiB/s, done.
From https://git.david.com/bigData/project-1
   894f555..abd8edd  test       -> origin/test
error: Your local changes to the following files would be overwritten by merge:
        project-1/src/main/scala/com/david/service/OrderMicrobatchStat.scala
Please commit your changes or stash them before you merge.
Aborting
Updating 894f555..abd8edd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

解决方案:
方案1、服务器代码合并本地代码

$ git stash     				//暂存当前正在进行的工作。
$ git pull   origin test 		//拉取服务器的代码
$ git stash pop 				//合并暂存的代码
  • 1
  • 2
  • 3

方案2、服务器代码覆盖本地代码

$git reset --hard  				//回滚到上一个版本
$git pull origin test
  • 1
  • 2

本例中执行第一种方案.

D:\IdeaProject-ws-2\project-1\module-1>git stash
Saved working directory and index state WIP on test: 394f555 spark离线数据测试

通过执行git stash pop, 来取出贮藏的代码时, 报了如下错误:
The stash entry is kept in case you need it again

D:\IdeaProject-ws-2\project-1\module-1>git stash pop
Auto-merging module-1/src/main/scala/com/david/service/OrderMicrobatchStat.scala
CONFLICT (content): Merge conflict in module-1/src/main/scala/com/david/service/OrderStat.scala
The stash entry is kept in case you need it again.

D:\IdeaProject-ws-2\project-1\module-1>git stash list
stash@{0}: WIP on test: 994f555 spark 代码中过滤脏数据)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这个问题产生的根源在于我们在本地git pull拉取代码后,stash雪藏起来的代码,与我们git pull下来的代码有冲突。
正因为有这个冲突,stash的代码才在git stash pop之后保留一份备用,以防后续还需要用到stash的代码。

此时通过git stash list命令,可以发现你stash的代码还是存在的。这时,如果正常的git stash pop,当代码又被放回工作区的话,这个暂存的代码会同时被清除掉;然而在异常的情况(如git pull下来的代码与git stash pop出来的代码有冲突的话),就会给出提示:尽管有冲突,git还是会把这份stash代码给我们做保留。

解决这种冲突,与解决正常commit后产生的冲突是一样的:保留自己已开发的功能,但同时不要删除团队其他成员开发的功能就好。

同解决commit类冲突一样的处理流程:打开冲突文件,解决冲突。

然后执行以下几步走方案:

①、git add xxx文件
②、git commit -m “冲突已解决log”
③、git push origin 相应的分支

当冲突解决完后,通常是不再需要这个stash了,直接执行 git stash clear 情况掉所有的暂存stash列表

Tips:

  1. git stash clear是把所有的stash都清空;
  2. 只删除某一个stash,如只删除队列中的第一个,可以执行:git stash drop stash@{0}
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/625977
推荐阅读
  

闽ICP备14008679号