首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在尝试运行“`git rebase -在试图运行”`git rebase

在尝试运行“`git rebase -在试图运行”`git rebase
EN

Stack Overflow用户
提问于 2021-12-06 20:11:45
回答 1查看 3.9K关注 0票数 5

我正在运行命令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

我看了几个类似的问题,但答案都没有用。

我尝试了以下几点:

代码语言:javascript
运行
复制
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,但随后我就失去了在交互重基过程中所做的所有更改。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2021-12-06 23:43:12

您或某个流氓进程以一种与git rebase冲突的方式干扰您的回购状态。

错误消息表示您或其他人或其他人对您的回购状态做了一些事情,在重基过程中您无法这样做。它期望一个引用指向一个特定的提交,但是它从它下面被改变了。

如何恢复

下面是如何在不丢失所有重基工作的情况下恢复到目前为止(假设您还没有中止):

到目前为止,

  1. 保存您的重基进度

git分支部分重基头

这将创建一个名为PARTIAL-REBASE的分支ref,指向最后一个基于重定向的提交--也就是说,到目前为止您的重基工作。

您必须在git rebase --abort之前执行此操作,否则您将不得不搜索reflogs以恢复部分重基,这要复杂得多。

  1. 中止重基

git重基--中止

  1. 恢复其中断的重基。

有很多方法可以做到这一点,但这是最简单的。

首先,请参阅保存的部分重基中包含了哪些提交:

git日志部分重基

确保您在正确的分支上,然后重新运行原来的rebase命令,但是在命令中添加以下选项:

-进入部分-重基--交互式

要重基的提交列表将出现在编辑器中。仔细删除上面PARTIAL-REBASE的git日志中已经包含的提交行。除非你知道你在做什么,否则不要做任何其他的改变。

保存并关闭重基列表。重基列表中的提交现在将重新基于PARTIAL-REBASE,在中止时有效地恢复重基。

  1. 验证和清理

确认您的重基分支是否良好。

当您确信您的重基成功并且一切都很好时,请删除PARTIAL-REBASE ref:

git分支PARTIAL-REBASE -D

请参见How to fix "corrupted" interactive rebase?Git rebase failing,但我很惊讶没有人给出“如何恢复”解决方案,比如我的解决方案。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70251362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档