Git rebase后提交历史被抹掉了,怎么恢复?

FSD-闪闪 阅读 49

今天在合并分支时用了git rebase main,解决冲突后提交了,结果发现之前的提交历史全没了,只剩最后那次合并的记录。我明明记得要保留分支历史才用的rebase,现在该怎么把中间的几个提交找回来?

尝试过git reflog看到有之前的commit记录,比如:

82d3a1f (HEAD, feature/login) Merge branch 'main' into feature/login  
9f8c7d2 Save credentials logic  
a1b2c3d Add login form

但不知道该用哪个哈希值恢复中间步骤,直接checkout会创建新分支吗?

页面上有个登录表单突然样式错乱了,可能是冲突解决时删了CSS:

<form>  
  <input type="text" placeholder="Username">  
  <!-- 密码输入框好像被删了? -->  
  <button>Login</button>  
</form>

这下代码和提交历史都乱了,该怎么补救?

我来解答 赞 11 收藏
二维码
手机扫码查看
1 条解答
Mc.士轩
Mc.士轩 Lv1
git reflog 找到你要恢复的提交哈希,比如 a1b2c3d,然后执行 git reset --hard a1b2c3d 恢复到那个状态。如果想保留当前改动,先 git stash 一下再恢复。样式错乱的话,对比下 git diff a1b2c3d 看看哪块CSS丢了,我之前就这样搞的。

# 示例代码
git reflog
git reset --hard a1b2c3d
git diff a1b2c3d
点赞 13
2026-01-30 09:02