如何在“无法创建'.git / index.lock'之后恢复rebase:文件存在。”?

时间:2016-05-06 19:59:42

标签: git

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

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需要永远启动,而这种情况很少发生)。

3 个答案:

答案 0 :(得分:2)

继续使用loop.index0不起作用,因为在实际应用相关补丁之前git失败了。但你可以手动完成:

git rebase --continue

然后,根据需要解决冲突,并使用git apply .git/rebase-apply/patch 将更改的文件添加到索引中,最后使用git add

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

git cherry-pick not working