我正在运行命令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
Run Code Online (Sandbox Code Playgroud)
我发现克服这个问题的唯一方法是这样做git rebase --abort,但随后我会丢失在交互式变基期间所做的所有更改。有任何想法吗?
vas*_*vas 14
git rebase该错误消息表明您或其他人或某些东西对您的存储库状态做了某些操作,而在变基正在进行时您无法执行此操作。它期望引用指向特定的提交,但它从它下面被更改了。
以下是如何在不丢失迄今为止所有变基工作的情况下恢复的方法(假设您尚未中止):
git branch PARTIAL-REBASE HEAD
Run Code Online (Sandbox Code Playgroud)
这将创建一个名为PARTIAL-REBASE指向最后一次变基提交的分支引用——即到目前为止您的变基工作。
您必须在之前 git rebase --abort执行此操作,否则您将不得不搜索引用日志来恢复部分变基,这会更加复杂。
git rebase --abort
Run Code Online (Sandbox Code Playgroud)
有很多方法可以做到这一点,但这是最简单的。
首先查看您保存的部分变基中包含哪些提交:
git log PARTIAL-REBASE
Run Code Online (Sandbox Code Playgroud)
确保您位于正确的分支上,然后重新运行原始 rebase 命令,但将以下选项添加到命令中:
--onto PARTIAL-REBASE --interactive
Run Code Online (Sandbox Code Playgroud)
编辑器中将显示对变基的提交列表。小心地仅删除上述 git 日志中已包含的提交行PARTIAL-REBASE。除非您知道自己在做什么,否则请勿进行任何其他更改。
保存并关闭变基列表。变基列表中的提交现在将被变基到 PARTIAL-REBASE,从而有效地在您中止变基时恢复变基。
验证您的 rebased 分支是否良好。
当您确定变基成功且一切正常时,请删除PARTIAL-REBASE引用:
git branch -D PARTIAL-REBASE
Run Code Online (Sandbox Code Playgroud)
另请参阅如何修复“损坏的”交互式变基?和Git rebase failed,尽管我很惊讶没有人给出像我这样的“如何恢复”解决方案。
| 归档时间: |
|
| 查看次数: |
10935 次 |
| 最近记录: |