我正在运行命令git rebase --continue
并得到一个错误:
error: update_ref failed for ref 'refs/heads/HEAD-feature': cannot lock ref 'refs/heads/HEAD-feature': is at db50dd34de1e90c0616bf9318be489ee8d9a012a but expected 83f09532b2352418c0f562f48929dc504e6a0452 error: could not update refs/heads/HEAD-feature
我看了几个类似的问题,但答案都没有用。
我尝试了以下几点:
1. git update-ref -d refs/remotes/origin/HEAD-feature
2. git --no-optional-locks fetch --prune origin
3. git gc --prune=now
4. git remote prune origin
我发现克服这一问题的唯一方法是做git rebase --abort
,但随后我就失去了在交互重基过程中所做的所有更改。有什么想法吗?
发布于 2021-12-06 23:43:12
您或某个流氓进程以一种与git rebase
冲突的方式干扰您的回购状态。
错误消息表示您或其他人或其他人对您的回购状态做了一些事情,在重基过程中您无法这样做。它期望一个引用指向一个特定的提交,但是它从它下面被改变了。
如何恢复
下面是如何在不丢失所有重基工作的情况下恢复到目前为止(假设您还没有中止):
到目前为止,
git分支部分重基头
这将创建一个名为PARTIAL-REBASE
的分支ref,指向最后一个基于重定向的提交--也就是说,到目前为止您的重基工作。
您必须在git rebase --abort
之前执行此操作,否则您将不得不搜索reflogs以恢复部分重基,这要复杂得多。
git重基--中止
有很多方法可以做到这一点,但这是最简单的。
首先,请参阅保存的部分重基中包含了哪些提交:
git日志部分重基
确保您在正确的分支上,然后重新运行原来的rebase命令,但是在命令中添加以下选项:
-进入部分-重基--交互式
要重基的提交列表将出现在编辑器中。仔细删除上面PARTIAL-REBASE
的git日志中已经包含的提交行。除非你知道你在做什么,否则不要做任何其他的改变。
保存并关闭重基列表。重基列表中的提交现在将重新基于PARTIAL-REBASE
,在中止时有效地恢复重基。
确认您的重基分支是否良好。
当您确信您的重基成功并且一切都很好时,请删除PARTIAL-REBASE
ref:
git分支PARTIAL-REBASE -D
请参见How to fix "corrupted" interactive rebase?和Git rebase failing,但我很惊讶没有人给出“如何恢复”解决方案,比如我的解决方案。
https://stackoverflow.com/questions/70251362
复制相似问题