中止旧的git变基并在变基开始后丢失提交

qcbq4gxm  于 2023-01-01  发布在  Git
关注(0)|答案(2)|浏览(261)

大约一周前,我在清理仓库时重定了一些提交的基,显然我并没有真正完成它。今天,一周和几个提交之后,我去重定基重新排序今天的几个提交,它告诉我我已经在重定基中了。
这应该是一个提示,以复制我的repo以防万一。但我没有...相反,我运行了git rebase --abort,当时听起来是正确的。嗯,这是不正确的。它中止了一周前的rebase,并将master的HEAD重置为旧的。
我还有其他几个最近的分支,我也推到了remote几次,但是最近的更改似乎永远消失了。我没有适当的git-fu级别来知道是否有任何方法可以恢复我的更改。
我完蛋了吗?

e3bfsja2

e3bfsja21#

检查git reflog。几乎在所有情况下,您都可以使用这些提交哈希值作为参考,回到过去。
我也会把git repo目录复制到其他地方,作为一个地方来做初步测试,看看什么会起作用,这样你就可以随心所欲地摆弄任何东西,而不会丢失未跟踪的文件,或者让东西进入一种你无法恢复的状态。

0yg35tkg

0yg35tkg2#

您应该能够通过git reflog获取最近提交的SHA1(在git rebase --abort之后消失)。
然后您就可以将当前分支重置为SHA1

# Suppose the old commit was HEAD@{2} in the ref log
git reset --hard HEAD@{2}

它有点像“Undoing a git reset --hard HEAD~1“。
另请参见“使用Git恢复丢失提交的图解指南”,了解其他恢复示例。

相关问题