Git:索引文件打开失败:“git status”上的权限被拒绝。在Bitbucket上主持

时间:2013-03-06 19:03:36

标签: linux git bitbucket

在过去几天我尝试制作git status或git pull时,我一直有这个问题。存储库托管在Bitbucket上。

尝试了几项工作(在stackoverflow上有一些与此相关的帖子,但它们不起作用)。

问题在于:

user@Host:/repo/$ git status
fatal: index file open failed: Permission denied
fatal: git status --porcelain failed

如果我做“git pull”:

user@Host:/repo/$ git pull
remote: Counting objects: 77, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 56 (delta 37), reused 41 (delta 22)
error: insufficient permission for adding an object to repository database .git/objects

fatal: failed to write object
fatal: unpack-objects failed

我仔细检查了本地权限,一切似乎都没问题。我有权使用所有文件。

注意:

如果我使用“sudo”,一切似乎都是常规工作,但我在该部署机器上没有root用户的任何SSH凭据。这让我觉得这是一个权限问题(正如错误所解释的),但是:它可能是什么,如果我是所有文件的所有者,包括.git /

中的文件

提前致谢!

4 个答案:

答案 0 :(得分:31)

运行fatal: index file open failed: Permission denied时出现同样的错误git status,我检查了.git/index

$ ls -al .git/index
令我惊讶的是,它是

----------  1 Kjuly  staff  768248 Sep  2 11:07 .git/index

我不知道为什么&它是如何变化的。无论如何,在我通过

将其权限更改回644之后
$ chmod 644 .git/index

git status有效。

答案 1 :(得分:5)

确保.git目录及其文件/子目录由用户拥有和写入。这听起来好像存储库是在不同的用户帐户下克隆的,或者是root用户(例如通过sudo)。

托管存储库的远程位置无关紧要,git status仅访问本地存储库。

答案 2 :(得分:1)

我遇到了同样的问题,并且想知道可能是什么原因..环顾四周,以为我在做什么,什么在接触文件系统和工作目录-我怀疑文件是由某个人打开的。具有一些锁的IDE,当我在终端git中执行合并和更改分支时。关闭IDE,关闭外壳,git pull正常,没有错误消息。我在系统中没有用户更改,因此我认为文件锁或IDE在后台为git repo所做的“为我”所做的事情是原因。希望这可以对某人有所帮助。如果您遇到相同的问题并想深入探讨(而不仅仅是解决问题),请问自己“谁/什么人可能接触并更改我的.git和工作目录的文件所有权”?就我而言,犯罪嫌疑人是Microsoft Visual Studio。我认为远程回购类型的调查和操作只是红鲱鱼和伤口敷料(或核选择),没有解决问题的症结所在。

答案 3 :(得分:0)

我今天遇到了与BitBucket相同的问题。以下是适合我的解决方法:

git remote set-url origin https://_username_@bitbucket.org/_my_/_repo_.git
git pull
git push
git remote set-url origin git@bitbucket.org:_my_/_repo_.git