尝试弄清楚这是 git 错误还是 Ubuntu 的问题。基本上,与 git 索引文件的交互大约有一半的时间会导致该文件的权限发生更改,以至于我无法再次执行相同的命令。如下所示:
$ ll .git
total 156K
...
drwxrwxrwx 2 dev dev 4.0K Jul 23 09:30 hooks
-rwxrwxrwx 1 dev dev 17K Aug 8 13:12 index
drwxrwxrwx 2 dev dev 4.0K Jul 19 09:31 info
...
$ gs
# On branch build-0.3
# Your branch is ahead of 'staging/build-0.3' by 5 commits.
# (use "git push" to publish your local commits)
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# scripts/loadDb.coffee
nothing added to commit but untracked files present (use "git add" to track)
$ ll .git
total 156K
...
drwxrwxrwx 2 dev dev 4.0K Jul 23 09:30 hooks
-rw-rw-r-- 1 dev dev 17K Aug 8 13:16 index # <------ this line
drwxrwxrwx 2 dev dev 4.0K Jul 19 09:31 info
...
$ git --version
git version 1.8.3.4
$ lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 12.04.2 LTS
Release: 12.04
Codename: precise
我已经向 git 邮件列表提交了一个错误报告,但该列表非常不方便用户使用,我无法判断它是否真的被提交了。也可能是我在 Ubuntu 中做错了什么,这就是导致它的原因。
自从我切换到 12.04 64b 后,这种情况就一直发生,但我不能肯定地说确切地发生的时候。
答案1
您的 git 存储库是否恰好位于 Windows 文件系统上?.git 中的文件不应是可执行的,777 权限清楚地表明它托管在非本机文件系统上。git status 似乎只是将权限恢复为正确的值(对于索引文件,它们应该是 644,这是正确的)。
我的所有 git 索引都有 644 个权限,并且它们运行起来没有问题。
另一方面,777 模式不会对 git 的功能产生任何影响。如果你除了模式更改之外没有看到任何不良影响,我不会太担心。