我运行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需要永远启动,而这种情况很少发生)。
答案 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)
该提交引入的所有更改都是由当前分支上的某些提交引入的。