记一次在使用git rebase过程中出现的重大失误

219 阅读2分钟

背景:

a分支,在半个多月前开发了一个新的功能,但是一直没有能合并到主线去,无奈,只能另开一个分支b继续开发。

事故发生场景:

  1. 在b分支开发完之后先add后commit,先pull后push
  2. 切换到a分支后想着把b分支最新的内容合并过来,此时我在a分支用了git rebase b 命令,然后我就发现我半个多月前commit的代码没了,顿时下出一身冷汗...此时连那次的提交记录的哈希值都不知道了,我心想坏了。
  3. 冷静下来想了想,在这次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要慎用...

遇到问题不要着急,要冷静~