Eclipse(STS 4)闪退导致EGit插件异常

引言

到目前为止,STS已经闪退过三次了。

问题很棘手,我需要冷静。

首先出现了一个问题就是,EGit无法commit。

第二个问题是切换分支报错。

闪退重启后EGit无法提交代码

观察闪退出现的时机,一般出现在我 commit 代码的时候,只要点击commit,STS就会以迅雷不及掩耳之势自动退出,猝不及防!

重启后,代码无法提交!!WTF!

问题出现在 index.lock 文件上。

index.lock文件是在进行某些比较费时的git操作时自动生成的,操作结束后会自动删除,相当于一个锁定文件,大小为0KB。它的目的在于防止对一个目录同时进行多个操作。有时强制关闭进行中的 git 操作,这个文件没有被自动删除,之后你就无法进行其他操作,必须手动删除。这个文件位置在项目的 .git文件夹中。

闪退重启后,手动删除这个文件,确实可以解决代码无法提交的问题。

闪退重启后切换分支出错

这个问题比较吓人。大有想把整个项目干掉重新pull的冲动。

现象描述:闪退重启之后,从目前正在工作的 feature(新功能)分支上切换回dev分支,但是当点击 switch branch 的时候,在EGit Git Staging 视图的 Unstaged Changes 区域突然涌现出大量未同步文件 !!!且当前分支也并未切换回dev分支,同时弹出错误提示框————"Check out branch encounter a problem !"

经过仔细观察,Unstaged Changes区域的文件都是dev分支上的文件,也就是说,整个项目的文件内容实际上已经是dev分支的内容了,但是由于前面闪退的原因,此时的切换操作EGit并没有把 HEAD指针 真正切换到dev分支上,还是停留在feature分支上,才会出现好似 “dev分支上的文件还没有在feature分支上提交” 的奇怪现象

在错误提示框的Detail一栏,始终显示 :Couldn't rename .../.../.../LOG_FILE_IS_UNDEFINED ... to ... (由于问题已经解决,因此没来得及截图,总之大意就是这个)

问题并没有比较靠谱的解释。

但我的解决方案是:将LOG_FILE_IS_UNDEFINED 文件重命名之后再重启Eclipse ,有时候系统会提示这个文件被占用,先将Java SE 服务停掉,然后将LOG_FILE_IS_UNDEFINED随便改个名称(可以加个后缀.bak),再重启Eclipse即可。

在Stack Overflow上搜索到类似的问题,但解决方案貌似并不管用。

不过,问题貌似出现在 rename 分支。这倒也可以解释为什么切换分支时文件系统中的实际内容已经是另一个分支上,而branch name却并未切换的现象。

总结

1、删除项目所在目录下的 .git 文件夹中的index.lock 文件;

2、重命名主项目下的LOG_PATH_IS_UNDEFINED 文件,或删除。

希望有了解这个问题的小伙伴,下方留言哦,非常感谢。:)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring源码分析第二天------spring系统概述以及IOC实现原理

1、Spring5 概述 Spring 是一个开源的轻量级 Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架, 其目的是用于简化企业级应用程序开发。 Spring 框架除了帮我们管理对象及其依赖关系,还提供像通…

Linux进阶之路————Linux概述

引言 Linux是一个开源、免费的操作系统。学习Linux知识分为以下几个阶段: 第一阶段:Linux环境下的基本操作命令,包括文件操作命令(rm、mkdir、chmod、chown)编辑工具使用(vi、vim)Linux用户管…

spring源码分析第三天------spring核心IOC容器和依赖注入原理

基于XML的依赖注入 1、依赖注入发生的时间 当 Spring IOC 容器完成了 Bean 定义资源的定位、载入和解析注册以后,IOC 容器中已经管理类 Bean 定义的相关数据,但是此时 IOC 容器还没有对所管理的 Bean 进行依赖注入,依赖注入在以下两种情况 …

JavaWeb中监听器Listener+过滤器filter+拦截器interceptor区别

JavaWeb中监听器Listener过滤器filter拦截器interceptor区别 如果从整个项目中看,一个servlet请求的执行过程就变成了这样context-param–>listener–>filter–>servlet–>interceptor(指的是拦截器) 1.概念 context-param:就是一些需要初…

Linux进阶之路————开机、重启和用户登录注销

关机、重启命令 shutdown 命令: 1)shutdown -h now 立即关机 2)shutdown -h 1 1分钟之后关机 3)shutdown -r now 立即重启 reboot 命令,直接使用,表示立即重启 halt 命令&am…

spring源码分析第四天------springmvc核心原理及源码分析

spring源码分析第四天------springmvc核心原理及源码分析 1、基础知识普及 2、 SpringMVC请求流程 3、SpringMVC代码流程 4、springMVC源码分析 4.1 4.2 4.3 5、Spring MVC 的优化 补充: SpringMVC经典设计是handlerMapping,大家可以看一…

Linux进阶之路————用户管理

引言 前面几篇关于Linux的已经大概领略了Linux的风采,本篇用户管理,将着重总结日常工作中,非常重要的用户管理功能。 主要包括:新增用户、删除用户、查询用户信息、指定/修改密码、切换用户、用户组,以及与用户管理相…

spring源码分析第五天------springAOP核心原理及源码分析

spring源码分析第五天------springAOP核心原理及源码分析 1、 面向切面编程。可以通过预 编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术 切面(Aspect) 连接点(Joinpoint) 通知&#x…

Linux进阶之路————Linux运行级别(重置密码)

引言 前面的《Linux进阶之路————开机、重启和用户登录注销》已经简单介绍过Linux系统运行级别的概念,今天来详细介绍和总结一下Linux的运行级别。 inittab配置文件 在配置文件目录下有一个inittab文件/etc/inittab,用于专门存储系统的运行级别&am…

Linux问题处理————命令提示符显示 bash-4.1# 解决方案

引言 本文系Linux学习过程中的一个小插曲。 在使用root用户创建了一个普通的tom 用户之后,系统莫名其妙卡死,重启后,发现命令提示符不再是 “用户名 目录”这种组合,而变成了 bash-4.1# 开头: 解决办法 将/etc/ske…

spring源码分析第六天------spring经典面试问题

spring源码分析第六天------spring经典面试问题 1、Spring5 新特性及应用举例 2、Spring 经典的面试问题 a、什么是 Spring 框架?Spring 框架有哪些主要模块? Spring 框架是一个为 Java 应用程序的开发提供了综合、广泛的基础性支持的 Java 平台。Spr…

Linux进阶之路————scp指令介绍与演示

引言 目前市场上很多终端软件都自带文件传输功能,且多为图形化界面,操作简单无脑。但是本着“指令最高端,拖拽贼JBLow”的原则,今天学习一下文件传输的命令:scp 操作演示 准备两台linux服务器 (我的是弄…

Mybatis源码分析第一天------Mybatis实用篇

Mybatis源码分析第一天------Mybatis实用篇 一切最基本的操作就是参考官方文档:https://mybatis.org/mybatis-3/zh/configuration.html 1、是什么 什么是 MyBatis? a、MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级…

深入理解Tomcat和Jetty源码之第一篇前奏知识

深入理解Tomcat和Jetty源码之第一篇前奏知识 这周开始对Tomcat和Jetty的源码和框架产生了浓厚的兴趣,接下来想记录一下学习Tomcat和Jetty源码的心得和体会,有兴趣的朋友可以关注一下,我主要以思维导图的方式来展现整体的学习思路~ 今天的整体…

Linux进阶之路————组管理与权限管理

引言 这篇博客将会总结一些关于组的概念和相关操作,以及文件的一些权限管理。 一、组的基本介绍 在前面的博文《Linux进阶之路————用户管理》已经有提到用户组的概念,实际上,组的概念并不局限于用户,文件和目录都有组的概念…

深入理解Tomcat和Jetty源码之第二篇servlet规范和servlet容器

深入理解Tomcat和Jetty源码之第二篇servlet规范和servlet容器 思维导图总览 这篇推送主要讲servlet的规范和什么是servlet容器? 1、先来讲讲servlet规范: 2、再用一个图来说明一下servlet容器是如何工作的 3、web应用 4、本节的重点,filter和…

JavaScript————FormData实现多文件上传

引言 星期四的时候,我遇到了一个文件上传的问题,与以往不同的是,这一次上传的是多个文件,而且涉及到了久违的javascript代码。 虽然最后实现的并不尽如人意,不过也算是完成了功能,接下来就把我发现的一些问…

深入理解Tomcat和Jetty源码之第三篇tomcat系统架构上:连接器是如何设计的

我们都知道Tomcat服务器是包括连接器和容器,​那他们内部具体是怎么实现的呢?今天让我们一起来学习一下~ 1、tomcat基础知识 2、tomcat和service的关系 3、tomcat的详细介绍(重点) 3.1、连接器 3.1.1、ProtocolHandler组件 3.1.2、…

Maven学习(一)————Maven技术概述

引言 在过去的项目开发中,存在很多实操性的痛点: 1、一个项目只通过一个巨大的java工程来开发,随着模块的增多,工程也变得异常庞大,不利于分工和管理。 2、过去需要的第三方 api 接口需要通过手动导包的形式&#x…

深入理解Tomcat和Jetty源码之第四篇tomcat系统架构上:容器是如何设计的

今天来介绍一下Tomcat的容器机制: 1、Tomcat的四种容器 2、容器示意图 3、责任链模式介绍 4、Tomcat如何确定请求是哪个Wrapper处理的 5、Tomcat的Context和servlet的ServletContext还有Spring的ApplicationContext有什么不同