【发布时间】:2016-09-02 16:46:26
【问题描述】:
帮助!当我现在尝试做git push origin master 时,我得到:
fatal: Unable to create '/home/ubuntu/workspace/.git/refs/remotes/origin/master.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.
当然,我发现了其他类似的问题(例如here),但那里的投票答案只是建议删除有问题的文件......但该文件不存在!
我最近尝试使用以下方法清除一些空间后,我担心会发生这种情况:
$ sudo git reflog expire --all --expire=now
$ sudo git gc --prune=now --aggressive
这可能是原因吗?有什么修复建议吗?
【问题讨论】:
-
如果文件确实不存在,则错误处理中发生了一些奇怪的事情,因为错误消息应该是
No such file or directory(即ENOENT,而不是EEXIST)。但是,使用sudo后最可能出现的问题是,您的存储库的一部分归您所有,一部分归超级用户所有,并且由于您不是超级用户,因此您不再有权触摸你的存储库。当然在这种情况下错误应该是EPERM,Permission denied...! -
@torek,天哪!有什么解决办法吗?
-
嗯,首先,问题是这是否真的是问题所在。您可以使用
ls -lR(递归ls -l)来查看所有权是否混淆。如果是这样,既然你显然有 sudo,你可以sudo chown -R <yourself> .将所有所有权归还给你自己。 -
@torek 我应该在 .git 文件夹中的哪个位置执行此操作?
-
鉴于您运行的两个命令应该只触及
.git中的东西,是的(如果是我,我会运行find . -user root或find . ! -user <me>作为ls的快捷方式,只是想看看我是否在其他地方做了同样愚蠢的事情,为了舒适,把find做得尽可能高……)。
标签: git repository