有时候,我们会遇到这种情况
获取提交记录
git log --pretty=one
比如,git 提交记录如下
1f0e8646ee5c5e7bfffe0ce38fe183300c926065 (HEAD -> main, origin/main) five
dcd605c388481e68d396d6c27949e9de4a11ab77 fourth
ef98780ec960f95c2ab1a9281f02dc01e2da65b5 third
47b662590820c3dd0871573f8324d2ba9f7c7ea1 second
788917326ae068b12baf5bb698cc6e6defddd968 fist
8ff36ee80a21b1ce967c50c089d49ddfc3d5af77 添加文件
4509c6ed71c4794e32eb3e02b98f7d1e9f27e50c Initial Commit
即,我们目前在five 处,但是想回退到fourth 处
这时候,我们可以执行
git reset --hard dcd605c388481e6
这样就回退到了fourth 处
这时候,我们再获取提交记录,获取到如下
dcd605c388481e68d396d6c27949e9de4a11ab77 (HEAD -> main) fourth
ef98780ec960f95c2ab1a9281f02dc01e2da65b5 third
47b662590820c3dd0871573f8324d2ba9f7c7ea1 second
788917326ae068b12baf5bb698cc6e6defddd968 fist
8ff36ee80a21b1ce967c50c089d49ddfc3d5af77 添加文件
4509c6ed71c4794e32eb3e02b98f7d1e9f27e50c Initial Commit
我们已经会退到了fourth 处,five的提交记录已经找不到了,
但是,如果我们突然反悔了,又想回到five 处,应该怎么办呢
,这时候,强大的git reflog 就派上用场了
执行下面命令
git reflog
获取到如下内容
dcd605c (HEAD -> main) HEAD@{0}: reset: moving to dcd605c388481e6
1f0e864 (origin/main) HEAD@{1}: commit: five
dcd605c (HEAD -> main) HEAD@{2}: commit: fourth
ef98780 HEAD@{3}: reset: moving to ef98780
47b6625 HEAD@{4}: reset: moving to 47b6625
ef98780 HEAD@{5}: reset: moving to ef98780
47b6625 HEAD@{6}: reset: moving to HEAD^
ef98780 HEAD@{7}: commit: third
47b6625 HEAD@{8}: commit: second
7889173 HEAD@{9}: commit: fist
8ff36ee HEAD@{10}: commit: 添加文件
4509c6e HEAD@{11}: commit (initial): Initial Commit
如上面内容所示,所有的提交和reset记录都在里面,我们
如果想回退到five ,就可以通过five 的 commitid进行会退
git reset --hard 1f0e864
就可以了,注意,这里一定要带上–hard,因为这里是要强行把失去的代码补回来
Git回退与恢复:使用gitlog和gitreflog
文章介绍了如何使用gitlog查看提交历史,以及在回退到某个提交后,如何利用gitreflog找到丢失的提交ID,以便在需要时恢复。当执行gitreset--hard回退到特定提交时,之前的提交记录可能会丢失,但gitreflog能保存这些操作的历史,方便找回。
1617

被折叠的 条评论
为什么被折叠?



