gpt4 book ai didi

git - 从 rebase 期间的无意跳过中恢复

转载 作者:IT王子 更新时间:2023-10-29 00:53:45 26 4
gpt4 key购买 nike

我只是试图将一个非常古老的分支 rebase ,对我的主分支进行一些小的修改。只 merge 涉及的三个文件中的一个就出现了问题,所以我不假思索地做了一个--skip,以为它会跳过那个文件,但碰巧的是,它似乎跳过了我所有的更改,并向前滚动。所以现在 rebase 完成了,我的更改似乎已经消失了。

我看到了关于 undoing rebase 的问题,但这对我来说都是希腊语,我看到了 reflog,但我不知道在 rebase 之前分支附加到哪个提交。

无论如何,我真的不需要撤销rebase,我只是希望能够恢复这两个文件的变化。无论如何都可以正确地做到这一点(如果做不到这一点,我只需要恢复昨天的存储库备份并手动挑选出来)。

最佳答案

首先,为您的 git 工作文件夹制作一个压缩包。这样可以更轻松地多次尝试。

假设发生了以下情况

  • git checkout 另一个旧分支
  • git rebase 大师
  • 一些问题(你跳过的)

此时你仍然在另一个旧分支中,你的 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

想象分支就像符号链接(symbolic link)(或指针),我们所要做的就是让分支'another-old-branch'指向旧的commit-id。旧的提交仍然存在,并且没有被你的 rebase 所触及。 kinda: '嘿 git,另一个旧分支是 e547ec0d2,忘记发生的一切'

在我们这里的例子中是 e547ec0d2a558d189464fc57192066b34ec5f28f,所以我们现在要做的是

  • git checkout another-old-branch # 如果你还没有在那里
  • git reset --hard e547ec0d2a558d189464fc57192066b34ec5f28f

现在您的分支已恢复正常。你可以重试你的 rebase 。

请注意,您的 reflog 现在比上面的示例复杂一点。但它应该仍然存在于某处......

祝你好运!

关于git - 从 rebase 期间的无意跳过中恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2431493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com