Eclipse切换Git分支时误判无变更需提交该如何解决?
问题根因
该问题基本是由换行符格式差异或文件权限追踪触发的Git误识别,和Eclipse自带的EGit插件配置不合理也有关联:不同分支的.gitignore文件存储的换行符(Windows的CRLF/类Unix系统的LF)不一致,或Git开启了文件权限追踪,都会导致无实际内容变更的文件被识别为待提交修改。
解决步骤
第一步:调整Git换行符配置
打开终端进入项目根目录,根据你的操作系统执行对应配置,统一换行符规则:- Windows系统:
git config --global core.autocrlf true - macOS/Linux系统:
git config --global core.autocrlf input
仅需要对当前项目生效的话,去掉命令里的--global参数即可。
- Windows系统:
第二步:关闭不必要的文件权限追踪
Git默认会追踪文件可执行权限的变更,IDE的自动操作可能会触发无意义的权限修改被识别为变更,执行如下命令关闭该功能:git config --global core.fileMode false第三步:快速处理当前误识别的变更
不需要提交无意义记录,直接执行如下命令重置.gitignore文件即可消除待提交提示:git checkout -- .gitignore第四步:调整Eclipse EGit插件配置
打开Eclipse依次进入「窗口>首选项>团队>Git」,勾选「自动忽略已提交文件的换行符差异」选项,避免插件重复识别换行符变更。第五步:清理已产生的无用提交记录
如果无用提交还未推送到远程仓库,执行交互式变基清理:git rebase -i HEAD~N
把N替换为你需要清理的提交数量,将无用的「No change.」提交前的pick修改为drop即可删除对应提交。确认修改后如果需要同步到远程,在团队成员没有基于这些提交开发的前提下,执行git push origin 对应分支名 --force-with-lease覆盖远程记录即可。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

