一、案发现场+解决过程:
本来是在本地开发并且提交了很多版本,然后再继续开发,突然写错了很多东西还有删除了很多东西,就只能回退到之前最近一次的版本了:
我记得有一个命令是可查看之前提交的版本的好像是git reflog,
于是先来查看一下:
第一步:
86189@LAPTOP-GAHM48A0 MINGW64 /d/start_java/redis6/blog_like/blogLikeDemo (master)
$ git reflog
a7a2a18 (HEAD -> master) HEAD@{0}: checkout: moving from master to master
a7a2a18 (HEAD -> master) HEAD@{1}: reset: moving to HEAD^
25718b1 (origin/master) HEAD@{2}: commit: 简单实现排行榜
a7a2a18 (HEAD -> master) HEAD@{3}: commit: update README.md
a09cb26 HEAD@{4}: commit: 精简化3
cd88edf HEAD@{5}: commit: 精简化2
ff1ae5c HEAD@{6}: commit: 精简化
cdc8573 HEAD@{7}: commit (initial): Initial commit
我记得之前提交的版本是备注信息是“简单实现排行榜”于是就找到前边的号码是25718b1,那么就可以通过git reset --hard 回退的号码这个命令来回退到之前的版本:
第二步:
$ git reset --hard 25718b1
HEAD is now at 25718b1 简单实现排行榜
这里是成功的了,very nice
二、题外话:
如果是执行完第一步后忘记了最后一次提交的备注信息是什么了会不会不知道要回退的号码是25718b1了呢?
如果是忘记了,那么还可以如果git log --all找到最近提交版本的信息:
86189@LAPTOP-GAHM48A0 MINGW64 /d/start_java/redis6/blog_like/blogLikeDemo (master)
$ git log --all
commit 25718b1a3a8fe0df67348a89d5536bd6a33fd31e (origin/master)
Author: xinqi <xinqi@qq.com>
Date: Thu Mar 2 14:50:01 2023 +0800
简单实现排行榜
commit a7a2a1819c170eb390c4370574613498f4328139 (HEAD -> master)
Author: xinqi <xinqi@qq.com>
Date: Thu Mar 2 00:10:22 2023 +0800
update README.md
commit a09cb265d5265ef9f376022dbe6754af3c7ac557
Author: xinqi <xinqi@qq.com>
Date: Wed Mar 1 22:57:23 2023 +0800
精简化3
commit cd88edf9a5cc1d44ca91fe130913a2f9712ee837
Author: xinqi <xinqi@qq.com>
Date: Wed Mar 1 22:54:26 2023 +0800
精简化2
看到这个时间没:
commit 25718b1a3a8fe0df67348a89d5536bd6a33fd31e (origin/master)
Author: xinqi <xinqi@qq.com>
Date: Thu Mar 2 14:50:01 2023 +0800
简单实现排行榜
这个时间就是最近一次提交的,因此就是他实锤了。
如果在不信,那么可以看一下码云仓库,因为我每次提交给本地库都会push到码云远程仓库:
这里排在最前面的不就是25718b1这个号码吗?没错实锤了。
对了,既然记得每次提交到本地库都会push到码云里岂不是可以直接把本地的代码删掉再重新clone码云的代码过来吗?但是这次就是想提升一下git的鸽芭实力所以就排查一次吧。
但是如果不是一次commit同时一次push的话就会有问题,什么问题?远程仓库显示的最开头的号码不是对应最近一次提交的代码。
end
三、参考:
四、其他
对于之前好像踩过一次坑,不知道是不是,之前看到错误的文章就使用了git reset --hard HEAD^这个命令,但是这个错了,没办法回到25718b1这个代码版本,也许这个命令不是这么用得吧。