2012-08-02 12 views
125

W zdalnym serwerze mam okres po otrzymywać hak ustanowiony w celu dokonania wymeldowania git mojego repozytorium:błąd Push Git: Nie można odłączyć stary (Permission denied)

#!/bin/sh 
GIT_WORK_TREE=/var/www/<website> git checkout -f 

Ale kiedy robię push z mojego komputera lokalnego do repozytorium git na serwerze, mam następujących komunikatów o błędach:

remote: error: unable to unlink old '<file>' (Permission denied) 

pojawia się wiele razy, jeden komunikat dla prawie każdego pliku.

Jednak mam plik readme.txt, że jestem w stanie zmienić za pomocą git, tutaj są jego uprawnienia:

-rw-r--r-- 1 <serverusername> <serverusername> 2939 Aug 2 10:58 README.txt 

Ale inne pliki z dokładnie tego samego właściciela i samymi uprawnieniami, daj mi ten błąd .

W innym lokalnym repozytorium dla innej witryny, mam pliki z moją nazwą użytkownika lokalnego komputera jako właścicielem, a kiedy przekazuję na serwer zdalny, szanuje on właściciela serwera zdalnego i działa jak czar.

Oczywiście wydaje się błąd związany z uprawnieniami, ale nie mogę znaleźć sposobu, aby to naprawić, żadnych sugestii?

Odpowiedz

211

Kiedy trzeba odłączyć plik, trzeba mieć pozwolenie „w” do katalogu, w którym plik jest nie do pliku ...

+44

Rzeczywiście to był problem, naprawiłem go za pomocą 'sudo chmod -R g + w' ciągu winnych folderach. – rfc1484

+0

dzięki OMG. Było tak denerwujące, że uprawnienia myślące były poprawne w pliku. Ma sens, że aktualizacje są bardziej podobne do akcji 'mv' niż tylko nadpisują. – doublejosh

+1

Zmiana uprawnień dir działała dla mnie (dziękuję!), Ale to dziwne, ponieważ mogłem ręcznie nadpisać dane pliki przez sftp bez żadnych problemów. Dziwne, że kiedy git próbował zrobić to samo, nie mógł. –

4

FWIW - miałem podobny problem i nie jestem pewien, czy to złagodziło to (poza modyfikacją uprawnień): Zamknięcie Eclipse, które używało gałęzi z tym problemem.

26

Jeśli używasz dowolnego IDE, najprawdopodobniej problem polega na tym, że jakiś plik był używany. Podobnie jak twój tomcat może używać tego pliku. Spróbuj zidentyfikować ten konkretny proces i go zamknąć. To powinno rozwiązać twój problem.

+1

Dziękuję bardzo! .. – Delphine

25
sudo chmod -R ug+w .; 

To polecenie rozwiązałoby problem. Daje uprawnienia do zapisu do folderu.

3

To jest stare pytanie, ale może to pomóc użytkownikom komputerów Mac.

Jeśli kopiujesz pliki z Time Machine ręcznie, zamiast przywracać je za pomocą Time Machine, doda się do wszystkiego ACLs, co może zepsuć twoje uprawnienia.

Na przykład, sekcja w this article że mówi „Jak naprawić Mac OS Uprawnienia X plik” pokazuje, że „każdy” ma uprawnienia niestandardowe, które psuje to wszystko:

Bad permissions, from http://dreamlight.com/how-to-fix-mac-os-x-file-permissions

Musisz usuń listy ACL z tych katalogów/plików. This Super User answer idzie do niego, ale tutaj jest komenda:

sudo chmod -RN .

Następnie można upewnić się, że katalogi i pliki mają odpowiednie uprawnienia. Używam 750 dla katalogów i 644 dla plików.

+0

' sudo chmod -RN .' zrobił trik ! Dzięki! –

0

Pamiętaj również o sprawdzeniu uprawnień do katalogu głównego!

można znaleźć:

drwxr-xr-x 9 not-you www-data 4096 Aug 8 16:36 ./ 
-rw-r--r-- 1  you www-data 3012 Aug 8 16:36 README.txt 
-rw-r--r-- 1  you www-data 3012 Aug 8 16:36 UPDATE.txt 

oraz 'brak dostępu' błąd pojawi się.

0

Otrzymuję ten błąd i inne dziwne błędy git, gdy mam uruchomiony serwer (w Intellij). Zatrzymanie serwera i ponowienie próby polecenia git często naprawia to za mnie.

2
git reset --hard 

pracował dla mnie

0

Myślę, że problem może być z prawa własności do folderu tak ustawić go do bieżącej eksploatacji użytkownika

sudo chown -R your_login_name/ścieżka/do/folderu

można znaleźć rozwiązanie here

2

miałem ten sam problem i żaden z powyższych rozwiązań pracował dla mnie. Usunąłem folder naruszający prawa. Następnie:

git reset --hard 

usuniętych plików przewlekły oczyścić stan git, a następnie zrobił:

git pull 

To w końcu działało.

UWAGA: Jeśli folder było, na przykład, publiczny folder z plikami budować, należy pamiętać, aby odbudować pliki

+0

Dzięki, nic więcej nie działało dla mnie, usunięcie go wydawało się jedyną opcją. – math0ne

0

Niektóre pliki są zabezpieczone przed zapisem, że nie może nawet git ponad pisać. Zmień uprawnienia folderu, aby zezwolić na pisanie, np. sudo chmod 775 NazwaFolderu

A potem znowu ciągnąć git

Powiązane problemy