我只是试图将一个非常古老的分支重新修改为我的主人.合并三个文件中只有一个存在问题,所以我做了一个不假思索的--skip,认为它会跳过那个文件,但是当它发生时,它似乎已经跳过了我所有的更改,并向前滚动.所以现在rebase已经完成,我的变化似乎已经消失了.
我已经看到了关于撤销rebase的问题,但它对我来说都是希腊语,我看到了reflog,但我不知道在rebase之前哪个分支附加了.
在任何情况下,我都不需要撤消rebase,我只是希望能够恢复两个文件中的更改.无论如何都要正确地做到这一点(如果没有这个,我只需要恢复昨天的存储库备份并手动选择这些位).
ret*_*eto 44
首先,为你的git工作文件夹制作一个tarball.这样可以更轻松地多次尝试.
让我们假设发生了以下情况
在这一点上,你现在仍然在另一个旧分支,你的reflog告诉你:
6f8348f HEAD@{0}: rebase: <commit message of last commit in another-old-branch>
e547ec0 HEAD@{1}: checkout: moving from another-old-branch to e547ec0d2a558d189464fc57192066b34ec5f28f^0
65cedf8 HEAD@{2}: checkout: moving from master to another-old-branch
Run Code Online (Sandbox Code Playgroud)
想象一下,分支就像符号链接(或指针),我们所要做的就是让分支"另一个旧分支"指向旧的commit-id.旧的提交仍然存在,并且你的rebase没有触及它.有点:'嘿git,另一个老分支是e547ec0d2,忘记发生的其他事情'
在我们这里的情况是e547ec0d2a558d189464fc57192066b34ec5f28f,所以我们现在要做的是
现在你的分支恢复正常了.你可以重试你的rebase.
请注意,您的reflog现在比上面的例子稍微复杂一点.但它应该在某处...
祝好运!