Git失败了“无法创建'<projectpath> / .git / index.lock':权限被拒绝”即使它应该拥有所有权限

时间:2016-10-04 17:30:09

标签: git permissions

我正在尝试重置git并收到以下错误:

fatal: Unable to create '<path>/.git/index.lock': Permission denied

如果我在运行进程之前执行“ls -al .git”,我会发现没有index.lock。如果我在尝试重置后再次执行此操作,则会看到它已创建。所以它显然有权创建文件(事实上成功创建它)但仍然报告错误。

我删除了锁定文件并再次运行,但我遇到了同样的问题。我也尝试过再次运行它而不删除文件,当然我收到一条类似的错误消息,说文件已经存在。

我的.git目录的权限是drwxrwxrwx,它创建的index.lock文件的权限是-rwxrwxrwx。

我使用git 1.7.1

在RHEL 6.6上运行

我没有使用除git命令本身之外的任何git工具(所以没有折衷的git或者集成了git的IDE或类似的东西)。

我正在运行的确切命令是

git reset --hard HEAD

可能需要注意的一点是:我在另一台机器上创建了此存储库。然后我把它放在CD上并将其转移到另一台机器上。是否有可能与机器,路径,操作系统或git版本的更改有某种关系?

我通过“git config --list”看到的唯一绝对路径是“remote.origin.url”,但它不应该需要该命令的来源,我不认为它会产生某种问题index.lock文件。

1 个答案:

答案 0 :(得分:0)

我解决了。

事实证明,这个问题实际上与git无关。

我仍然不确定为什么这不起作用的确切细节,但事实证明它是文件系统和文件权限问题。

我当时没有意识到这一点,但我正在处理的文件系统实际上是一个Windows共享驱动器。我不确定它用于服务Linux文件系统的服务是什么,但这显然是个问题。我转移到Linux共享驱动器,现在它正常工作。

如果有其他人感兴趣,这里有一些我在Windows驱动器上运行的命令和输出。你可以看到它表现得非常奇怪:

>echo "foo" > bar
>ls -al
total 8
drwxrwxrwx 2 nate unixusers 4096 Oct 4 2016 .
drwxrwxrwx 8 nate unixusers 4096 Oct 4 2016 ..
-rwxrwxrwx 1 nate unixusers    4 Oct 4 2016 bar
>cat bar > foo
>ls -al
total 8
drwxrwxrwx 2 nate unixusers 4096 Oct 4 2016 .
drwxrwxrwx 8 nate unixusers 4096 Oct 4 2016 ..
-rwxrwxrwx 1 nate unixusers    4 Oct 4 2016 bar
-rwxrwxrwx 1 nate unixusers    4 Oct 4 2016 foo
>cp foo foocpy
cp: cannot create regular file 'foocpy': Permission denied
>ls -al
total 8
drwxrwxrwx 2 nate unixusers 4096 Oct 4 2016 .
drwxrwxrwx 8 nate unixusers 4096 Oct 4 2016 ..
-rwxrwxrwx 1 nate unixusers    4 Oct 4 2016 bar
-rwxrwxrwx 1 nate unixusers    4 Oct 4 2016 foo
-rwxrwxrwx 1 nate unixusers    0 Oct 4 2016 foocpy
>cat foocpy
>cat foo
foo
>cat bar
bar

非常奇怪的东西。

无论如何,我不想在这里提出另一个问题。这个解决方案对我来说已经足够了,我只是发布上面的例子来证明它很奇怪。如果有人想知道Windows驱动器的行为方式,那么他们可以问自己的问题,但这对我来说已经足够了。