当我做'git commit'时,我得到以下内容:
无法创建“project_path/.git/index”。lock `:文件已存在。
然而,当我执行ls project_path/.git/index。锁定,表示文件不存在。你觉得我该怎么做?我还注意到project_path/。git由root拥有,不确定这是否与我遇到的问题有关。
Git版本为1.7.5.4
编辑:看起来问题很可能是我正在运行的另一个进程,那就是向项目目录写入(我不知道)。我重新启动了我的电脑,然后我就没有问题了。
获取错误:
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
fatal: Unable to create '/home/user/project/.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.
但是我找不到(也没有删除)那个。git/index。锁文件。
在我的情况下,吉特可乐正在运行!
它显然创建了。git/index。每隔一段时间就会锁一次,或者是由于我在命令行上所做的更改而导致的,在此期间我收到了这个错误-所以Git -cola显然会“干扰”Git的命令行运行(或一些Git CLI操作)。
这可以通过在命令行git rebase期间关闭git-cola来解决。
在我的例子中,我随机得到a
fatal: Не удалось создать «/home/mingun/project/.git/index.lock»: Файл существует.
Похоже, что другой процесс git запущен в этом репозитории,
например редактор открыт из «git commit». Пожалуйста, убедитесь,
что все процессы были завершены и потом попробуйте снова.
Если это не поможет, то возможно процесс git был ранее завершен
с ошибкой в этом репозитории:
удалите файл вручную для продолжени
消息,当我做一个rebase,我很确定没有其他git进程。至少一个没有看到他们中的任何一个,当我检查他们刚刚失败的rebase命令。当然,每次我都立即检查并看到/home/mingun/project/.git/index. .锁文件不存在。
通常情况下,当我每次尝试进行重基时,都会遇到这个错误,在几次重基提交后,进程会失败。更糟糕的是,在大多数情况下不可能继续rebase:
$ git status
интерактивное перемещение в процессе; над e55e03330e3
Last commands done (21 commands done):
pick 1a39bd4740d <skipped>
pick f1906baf94b <skipped>
(смотрите дополнительно в файле .git/rebase-merge/done)
Next commands to do (13 remaining commands):
pick 98db21878ed <skipped>
pick 30488ef5a5a <skipped>
(используйте «git rebase --edit-todo», чтобы просмотреть или изменить их)
Вы сейчас перемещаете ветку «master» над «e55e03330e3».
(все конфликты разрешены: запустите «git rebase --continue»)
Изменения, которые будут включены в коммит:
новый файл: <skipped>
изменено: <skipped>
$ git rebase --continue
fatal: не удалось прочитать файл журнала «.git/rebase-merge/message»: Нет такого файла или каталога
error: не удалось закоммитить проиндексированные изменения.
$
有时,如果我在两次尝试之间等待几秒钟,git rebase(实际上是git svn rebase)命令会成功完成。但通常你必须等待并尝试10次或更多。重构todo的时间越长,它以错误结束的可能性就越大。
当我试图用英文消息重现这个错误,并在错误跟踪器中发布结果时,我惊讶地发现,使用LANG=C总是能解决问题!我认为这是一场意外非常可疑。
我认为这是一个git错误的另一个原因是这些错误最近才开始发生(可能是一年前),尽管我的git工作模式已经有一段时间没有改变了。
所以,如果你遇到了和我一样的问题,试着在你的命令前加上LANG=C:
$ LANG=C git svn rebase