1.情景展示
在实际开发过程中,遇到代码冲突,很正常,解决起来也简单。
但是,我遇到的这种情况,却不常见
在本地改了一周的代码,最后想要提交,为了不和别人提交的代码产生冲突,我们需要先更新,再提交。
即使有冲突,也在本地解决好再提交。
问题来了:
更新完成以后,我本地的修改后代码全没了(idea更新完有提示,是否需要回滚,但是回滚什么内容,我没看)。
一朝回到解放前,这可咋整?
2.具体分析
经过和我历史提交的代码对比,发现:
别人把我所修改的文件目录偷偷换了位置,导致我即使想使用本地历史还原都不行。
这可咋整?
3.解决方案
通过idea的本地历史记录进行恢复。
正常情况下,如果别人的代码把我们本地的代码给覆盖了,我们可以这样做:
选中被覆盖的文件,右键-->Local History-->然后打开的就是此文件在本地的历史修改记录。
找回本地已修改的代码
现在,既然别人修改了你的文件所在目录,那就找到它的上级目录所在位置,右键,查看本地操作历史。
如果不确定该选择哪个目录,我们可以直接选中项目名称。
我们可以看到:
Update from VCS,直接选择离它最近的一个历史变更记录就行了(Update from VCS下面就是本地最新的代码)。
点击它,即可对比远程仓库和本地文件的变化。
这样就能找回本地修改的代码了。
恢复本地修改的代码
点击本地已经被删除的目录,双击打开,全选,复制。
然后找到更新后此文件,并打开。
然后,全选,右键粘贴,这样就能将代码更新成自己已经修改好的代码了。
4.提交代码的正确流程
当然,出现这种情况,也跟我错误地使用Git操作流程有关。
如果我先将代码提交到本地仓库,再去拉取远程仓库的代码,就不会导致本地代码丢失的问题。
而我先前的错误操作习惯是:
直接更新远程仓库代码,这才导致这次事故的发生。
如何正确地提交代码到远程仓库?
第一步:commit
即提交代码至本地仓库。
点击工具栏的提交按钮,会自动切换到提交窗口,如下图所示。
勾选上要提交的代码(修改的文件、新增的文件)。
然后,点击“Commit”,完成提交。
提交完成,右下角会有提示。
第二步:pull
即从远程仓库拉取代码。
如果提交的是本地所有文件,那么,正常情况下,提交完成后,这里将不再有未提交文件。
拉取代码完成后,右下角会有提示。
如果这个时候,有代码冲突的话,需要进行处理。
将冲突解决完后,启动项目测试是否有问题,没有问题的话再push。
第三步:push
将本地仓库代码提交至远程仓库。
点击工具栏的“推送”按钮,来到下面推送详情界面。
确认自己将要推送的代码,点击“Push”。
写在最后
哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!