Git本地未提交代码丢失怎么办?IDEA本地历史记录帮你找回
Git本地未提交代码丢失怎么办?IDEA本地历史记录帮你找回
在使用Git进行代码开发时,有时会遇到本地未提交的代码丢失的情况。本文将详细介绍如何通过IDEA的本地历史记录功能找回丢失的代码,并总结了正确的Git操作流程,帮助开发者避免类似问题的发生。
1. 情景展示
在实际开发过程中,遇到代码冲突是很常见的,通常也比较好解决。但是,有时候会遇到一些不常见的情况,比如在本地修改了一周的代码,最后想要提交时,为了不和别人提交的代码产生冲突,需要先更新再提交。即使有冲突,也需要在本地解决好再提交。
问题来了:更新完成以后,本地的修改后代码全没了(IDEA更新完有提示是否需要回滚,但是回滚什么内容,可能没有仔细查看)。
2. 具体分析
经过和历史提交的代码对比,发现:别人的代码修改了文件目录的位置,导致即使想使用本地历史还原也不行。
3. 解决方案
通过IDEA的本地历史记录进行恢复。
正常情况下,如果别人的代码覆盖了本地的代码,可以这样做:选中被覆盖的文件,右键 --> Local History --> 然后打开的就是此文件在本地的历史修改记录。
找回本地已修改的代码
现在,既然别人修改了文件所在目录,那就找到它的上级目录所在位置,右键,查看本地操作历史。如果不确定该选择哪个目录,可以直接选中项目名称。
我们可以看到:Update from VCS,直接选择离它最近的一个历史变更记录就行了(Update from VCS下面就是本地最新的代码)。点击它,即可对比远程仓库和本地文件的变化。
这样就能找回本地修改的代码了。
恢复本地修改的代码
点击本地已经被删除的目录,双击打开,全选,复制。然后找到更新后此文件,并打开。然后,全选,右键粘贴,这样就能将代码更新成自己已经修改好的代码了。
4. 提交代码的正确流程
当然,出现这种情况,也和错误地使用Git操作流程有关。如果先将代码提交到本地仓库,再去拉取远程仓库的代码,就不会导致本地代码丢失的问题。而错误的操作习惯是:直接更新远程仓库代码,这才导致这次事故的发生。
第一步:commit
即提交代码至本地仓库。点击工具栏的提交按钮,会自动切换到提交窗口,如下图所示。勾选上要提交的代码(修改的文件、新增的文件)。然后,点击“Commit”,完成提交。提交完成,右下角会有提示。
第二步:pull
即从远程仓库拉取代码。如果提交的是本地所有文件,那么,正常情况下,提交完成后,这里将不再有未提交文件。拉取代码完成后,右下角会有提示。如果这个时候,有代码冲突的话,需要进行处理。将冲突解决完后,启动项目测试是否有问题,没有问题的话再push。
第三步:push
将本地仓库代码提交至远程仓库。点击工具栏的“推送”按钮,来到下面推送详情界面。确认自己将要推送的代码,点击“Push”。
这样操作会存在一个问题:如果将本地代码commit到本地仓库之后,如果没有立即push到远程仓库,经常会遇到下列情形:别人推送在你推送之前。
此时,如果你点击push按钮后,将会提示推送失败,即本地不是最新代码。
需要将本地代码更新到最新后,才能push。解决方案有两种:
一种是:点击合并按钮进行合并,代码合并完成后,会自动将代码推送至远程仓库。
另一种是:点击取消按钮。然后拉取远程代码,拉完后再推送。
所以,为了规避这种麻烦,最好在pull并处理完代码冲突问题后,立即进行push。
另外,git记录的是你在本地仓库的提交时间,而不是推送时间。比方说:我在本地12:40将代码提交到了本地仓库,但是,到了下午3:30才将代码推送到远程仓库。等代码推送成功后查看git操作记录,将会发现代码的提交时间是12:40,而不是3:30。
在提交界面,如果发现并没有包含所有待提交的代码。
需点击“刷新”按钮。commit之后,无法回滚。将代码提交到本地仓库后,将无法通过菜单操作进行代码回滚。