背景:
a分支,在半个多月前开发了一个新的功能,但是一直没有能合并到主线去,无奈,只能另开一个分支b继续开发。
事故发生场景:
- 在b分支开发完之后先add后commit,先pull后push
- 切换到a分支后想着把b分支最新的内容合并过来,此时我在a分支用了
git rebase b命令,然后我就发现我半个多月前commit的代码没了,顿时下出一身冷汗...此时连那次的提交记录的哈希值都不知道了,我心想坏了。 - 冷静下来想了想,在这次rebase之前我代码肯定还是有的,最后经过博客园和文心一言的帮助下找回了代码。
具体操作:
🙂
git reflog 分支名(分支名加或不加都可以,加了是代表只看当前分支,不加就是查看所有分支的)
命令解释
git reflog 是一个命令,用于查看 Git 仓库中的引用日志。引用日志记录了仓库中所有分支、标签和HEAD的变动记录。
通过运行 git reflog,你可以查看最近的一些提交记录,包括那些已经被删除或重命名到其他引用的提交。这对于恢复丢失的提交或查看历史提交记录非常有用。
例如,如果你想查看最近的引用日志,可以运行:
git reflog
这将显示最近的提交记录,每个记录都有一个独特的哈希值,表示特定的提交。
如果你想查看特定引用(如特定分支或标签)的日志,可以运行 git reflog <reference>。例如,要查看主分支(master)的引用日志,可以运行:
git reflog master
这将显示主分支的所有提交记录。
需要注意的是,引用日志只保留一段时间(默认情况下是30天),所以如果你需要长期保存这些记录,应该将它们导出或复制到其他位置。
执行完之后的结果是这样的
😅
找到自己当时那个代码的提交记录的哈希值
比如说上面的f29a81ea
看到后面的HEAD@{42}了吧
把他放到这个命令中执行
git reset HEAD@{42} --hard
就退回到这次提交了
😆
代码就这样回来噜
📌
重新搞一个分支备份这份代码,先把最新的代码通过merge合并过来。 rebase要慎用...
遇到问题不要着急,要冷静~