首页 > 代码库 > eclipse egit 更新未提交文件的方法

eclipse egit 更新未提交文件的方法

问题

  以前一直在项目中使用SVN..感觉真的很好用,不管是切分支,合并分支,编辑冲突,还是更新代码什么的都感觉很方便...现在新公司项目里使用git...我自己虽然用过,但是多人合作一直没用过.所以遇到了一个很蛋疼的问题百度一直没有答案,今天偶然发现了一个解决办法.

  项目里肯定有很多配置文件,经常会有一些同学不小心上传自己的配置,我本地也修改过这个配置并且不打算提交,但是别人提交的新的版本里有这个文件,然后整个版本我都不能pull下来,因为会提示你当前的修改会被覆盖.

 

解决办法

比如我有这么一个文件

技术分享

eclipse里修改,但是不提交.

技术分享

然后我在别的仓库里修改并提交远程

技术分享

技术分享

这个时候pull代码会报错(与资源库同步视图里merge操作).

技术分享

因为这个文件没提交.reset我肯定是不想做的,因为我的修改就没了.commit我也不想做,因为我个人配置不想上传到服务器的版本中去.

所以应该选stash就是暂存当前这个文件.

 

这个时候eclipse里的那个java文件会被还原,同时会多一个stash的记录,保存着前面被还原的文件.

技术分享

技术分享

因为这个时候文件已经被还原了,以及和以前的历史版本一致,所以可以pull了.我们执行pull

 

技术分享

更新完以后..我们可以再把刚才stash的文件pop出来.

 

在之前那个stash@{0}上面右键 apply stashed changes

技术分享

会提示冲突.很正常....没有冲突的话我们之前就能pull了..也不用stash了...

 

技术分享

在TestGit上右键mergeTool就可以编辑冲突了..

左边文件是别人那里提交的,右边是我stash的.

编辑好以后右键TestGit选择mark as merged就OK了

 

技术分享

这个时候就成功更新了别人的代码,并且没有提交自己的修改了...

 

 

感想

1.这点我感觉还是SVN好用...可以选择直接不更新这个配置文件,使用自己的本地配置,同时更新版本中的其他文件(也有可能是我GIT用的不熟没发现这个功能)

2.合并的时候感觉没SVN好用.SVN可以再eclipse里列出服务器版本,我的版本,合并后的版本,我再egit里没法操作,要用外部的工具,比如beyondcompare.但是这样的话代码着色功能就没了.很蛋疼.

3.stash好像蛮好用,可以缓存一堆文件,还可以有N个stash要哪个就弹出哪个...这样真的挺好的,我可以stash N个不同的配置...就是不知道这样是不是正确用法...

 

eclipse egit 更新未提交文件的方法