2013-03-06 10 views
14

Mam problem ten przez ostatnie kilka dni, gdy próbuje się, albo, status git lub git pull. Repozytorium jest hostowane na Bitbucket.Git: plik indeksu otwarty nie powiódł się: odmowa uprawnień w "statusie git". Hostowane na Bitbucket

Próbowałem kilku rzeczy, aby to działało (jest kilka postów związanych z tym na stackoverflow, ale nie działały).

Oto problem:

 
[email protected]:/repo/$ git status 
fatal: index file open failed: Permission denied 
fatal: git status --porcelain failed 

Gdybym zrobić "git pull":

 
[email protected]:/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 

I podwójne sprawdzone lokalne uprawnienia i wszystko wydaje się być w porządku. Mam pozwolenie na wszystkie pliki.

Uwaga:

Jeśli używam „sudo” wszystko wydaje się działać jak regularne, jednak nie mam żadnych poświadczeń SSH dla root na tej maszynie wdrażania. To sprawia, że ​​myślę, że to problem z uprawnieniami (jak wyjaśnia błąd), jednak: co to może być, jeśli jestem właścicielem wszystkich plików, w tym plików wewnątrz .git/

Z góry dziękuję!

+0

Skąd masz pliki z pilota? – AdamT

+0

czy "klonowałeś" pilota? – AdamT

+0

Tak, zrobiłem klon do zdalnego serwera przez SSH – demogar

Odpowiedz

18

Mam ten sam błąd fatal: index file open failed: Permission denied przez metę git status i sprawdziłem .git/index przez

$ ls -al .git/index 

ku mojemu zaskoczeniu, to

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

nie mam pojęcia dlaczego & jak to zmienić. W każdym razie, po zmianie to uprawnienie z powrotem do 644 przez

$ chmod 644 .git/index 

git status prac.

4

Upewnij się, że katalog .git i jego pliki/podkatalogi są własnością użytkownika i mogą być zapisywane przez użytkownika. Wygląda na to, że repozytorium zostało sklonowane pod innym kontem użytkownika lub jako użytkownik root (np. Przez sudo).

Nie ma znaczenia, gdzie zdalny z repozytorium jest hostowany, status git tylko uzyskuje dostęp do lokalnego repozytorium.

0

Doświadczyłem dzisiaj tego samego problemu z BitBucket. Oto obejście, które zadziałało:

git remote set-url origin https://[email protected]/_my_/_repo_.git 
git pull 
git push 
git remote set-url origin [email protected]:_my_/_repo_.git 
Powiązane problemy