"Unable to create '.git/index.lock': File exists."后如何恢复变基?



我运行Xcode,它自动运行git操作。如果Xcode比git更快地启动操作,这可能会导致某些rebase -i操作失败。结果是:

fatal: Unable to create '.git/index.lock': File exists.
If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

Xcode任务在我做任何事情之前就完成了,所以index.lock已经不在了,我应该准备好继续。

好的,所以我尝试git rebase --continue,因为其他操作现在已经完成,index.lock应该不存在了。然而,这很快就爆发了,并显示了一条错误消息,如:

The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
    git commit --allow-empty
Otherwise, please use 'git reset'
interactive rebase in progress; onto abcdef
Last commands done (X commands done):
   pick abcdef Something
   pick abcdef Something
Next commands to do (Y remaining commands):
   pick abcdef Something
   pick abcdef Something
You are currently rebasing branch 'foo' on 'abcdef'.
nothing to commit, working directory clean
Could not apply abcdef

在这一点上,我只是放弃了--abort,重新开始。我失去了我制定的重新基准战略,也失去了我解决的任何冲突。我能做些什么来正确地恢复这个过程,不丢失任何数据?

出于这个问题的目的,"在重新定基之前关闭Xcode"不是我想要的答案。假设我已经忘记了做这件事,并且处于这种崩溃状态(而且,Xcode需要很长时间才能启动,这种情况很少发生)。

继续使用git rebase --continue不起作用,因为git在实际应用有问题的补丁之前失败了。但你可以手动完成:

git apply .git/rebase-apply/patch

然后,在必要时解决冲突,并使用git add将更改后的文件添加到索引中,最后使用git rebase --continue

我目前正在追踪产生锁错误的幽灵,并解决了您的问题。我还没有找到继续重新基准的方法,但您可以在全局范围内为用户启用git config --global rerere.enabled 1的重新基准(重用记录的分辨率)。这既不能修复git rebase中明显的种族条件,也不允许您继续rebase,但它会在重试时重新应用您的冲突解决方案,使其不那么痛苦。

该提交引入的所有更改都是由当前分支上的一些提交引入的。

gitcherry-pick不工作

相关内容

  • 没有找到相关文章

最新更新