我正在尝试重置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文件。
答案 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驱动器的行为方式,那么他们可以问自己的问题,但这对我来说已经足够了。