Git ile hatayı çekmeye çalışıyorum: açılamıyor .git / FETCH_HEAD: İzin verilmedi


209

Lütfen bana yardım et, bunu terminalimde çalıştırmaya çalışıyorum:

asgard@asgard-A7N8X2-0:~/CollegePortal$ git pull
error: cannot open .git/FETCH_HEAD: Permission denied

Sonra bunu deniyorum

asgard@asgard-A7N8X2-0:~/CollegePortal$ sudo git pull
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Yardım et, bu problemi anlamıyorum.


Genel anahtarınızı github hesabına eklediniz mi?
madhead

3
Çekmeye çalıştığınız yerel dizin ve dosyalar için yazma izniniz var mı? Ayrıca, muhtemelen sudossh anahtarlarına (root değil) erişmesi gerektiğinden burada hiç yardımcı olmaz.
Benjamin Bannier

Bu sorunu yaşadım ve kullanıcıma bu klasöre Değiştirme ve Tam Erişim izinleri vererek
Frank

Yanıtlar:


193

Birincisi çalışmıyor gibi görünüyor, çünkü kullanıcı o dizini değiştirmek için izinlere sahip değil, ikincisi ise kök kullanıcınızın git deposuna erişmek için doğru SSH anahtarlarına sahip olmaması.

Ne yapmaya çalıştığınıza bağlı olarak, depoyu farklı bir dizine klonlamak veya belki chownde geçerli dizinin kullanıcı için tam erişime sahip olması daha iyi olabilir


Benzer bir sorunla karşılaşıyorum ve www-datakullanıcıma .gitdizini güncelleme izni verebilir miyim emin değilim . Tarayıcıda http üzerinden php kullanarak kabuk komut dosyası arıyorum. Ayrıntılar burada
KillABug

13
Bu genellikle yanlışlıkla bir repoda koştuğunuzu sudo suve kök olarak davrandığınızı unutursanız olur . sudo chown -R <username> .Bu dizinde basit bir sihir çalışıyor!
Ray

149

Dizinde yeterli izniniz olup olmadığını kontrol edin .git/. Yazma izniniz olmalıdır. Bunları aşağıdaki komutla ayarlayabilirsiniz.

Proje klasörünüze gidin:

chown -R youruser:yourgroup .git/

1
Bu bana verirchown: youruser: Invalid argument
zakdances

43
O olmalıchown -R youruser .git/
karışır

1
chown .git/Çalışmak için ve onun ana klasörü vardı
zadubz

Bu çok yaygın bir sorun gibi görünüyor .. Tamam farklı kullanıcı ve başka bir kullanıcı ile çalışırsanız izinlerinizi değiştirmiş biraz zor.
René Höhle

Eğer chowndaha çalışmıyor da bu komutu çalıştırmaksudo chmod 0777 -R .git/
Kiran

49

Gruba izin vermek istiyorsanız,

sudo chmod g+w .git -R

benim için en iyi çalıştı.

MacOS için

sudo chmod -R g+w .git 

29

Bu bir UNIX izin sorunudur. sudoDepoyu klonlamak için kullanmayın . Kök ile aynı ssh anahtarına sahip değilsiniz ve yine de root olarak çalışmamalısınız. ls -laDosyalardaki izinleri bulmaya çalışın ve düzeltmek için chmod(veya sudo chown) kullanın. Umarım yardımcı olur.


Kesinlikle bu! Bu sorunla karşılaştım çünkü sudo cloneXCode'un yeni lisans sözleşmesini kabul etmek zorunda kaldım . Cevap anlaşmayı kabul etmek, sonra sudo olmadan klonlamaktır.
Barnaby


21

Bu sorunun cevabı .git / FETCH_HEAD'in yazma ayrıcalıklarına sahip olduğundan ve hepinizin ayarlanmış olduğundan emin olun.

Windows'ta bu sorunu yaşadım ve yazma izinleri verilerek çözüldü.

Unix'te kişi chmod a+rw .git/FETCH_HEADproje havuzundan çalıştırılabilir ve bundan sonra çalışması gerekir.


.git/FETCH_HEADizin sorunu açıksa tek başına çalışmaz .git.
Cur

17

Bu şekilde dene,

Adım 1: Önce kim olduğunuzu kontrol edin? mevcut kullanıcı adını döndürecektir, örneğin ubuntu

$ whoami 

2. Adım: Ardından geçerli kullanıcınıza izin verin, bu durumda ubuntu by

sudo chown -R ubuntu .git/

Amazon lightsail ubuntu üzerinde söylem kurulumu çalıştırırken benim için çalışıyor
Jide

11

Benim durumumda, sadece .git / FETCH_HEAD dosyasına okuma erişimim vardı. Bir çekme isteği yapabilmek için "sudo chmod g + w .git / FETCH_HEAD" yapmak zorunda kaldım.


.git/FETCH_HEADizin sorunu açıksa tek başına çalışmaz .git.
Cur

Grup için git klasörüne yazma erişimine izin vermek zorunda kaldımsudo chmod g+w .git/FETCH_HEAD
William

sudo chmod g+w .git/FETCH_HEAD, mükemmel çözüm.
Rishi Kulshreshtha

9

Windows'ta ilk sorunu (FETCH_HEAD izni reddedildi) alıyordum.

Git Bash'ı yönetici olarak çalıştırarak düzelttim (sağ tıklayın, yönetici olarak çalıştırın).


9

Kendinizi sahibi olan gruba eklemediyseniz .git/, yapmalısınız.

sudo usermod -a -G $(stat -c '%G' .git) $USER
sudo chmod g+u .git -R
sudo chmod g+u .gitignore
su - $USER

Bu ne yapar:

  1. hangi grubun sahibi olduğunu bulur .git/ ve kullanıcınızı bu gruba ekler.
  2. grup üyelerinin sahipleriyle aynı izinlere sahip olduğundan emin olur .git/.
  3. Bunu tekrarlar .gitignore, muhtemelen ihtiyacınız olacak
  4. grup üyeliği dosya izinlerinizi yenilemek için oturumunuzu kapatıp yeniden açar

Yakın zamanda böyle bir şey yaptıysanız (kendinizi sahip olduğunuz gruba eklediyseniz .git/), .git/FETCH_HEADsırasında yazabilmeniz için oturumu kapatıp tekrar açmanız gerekir git pull.


7

Komutu çalıştırarak geçerli kullanıcınıza izin verin

$ sudo chown -R <username> .git/



4

Windows 7 çalıştırırken, bu sorunu yaşadığımda .git klasörünü gizlemiştim. İzinler gayet iyi, sadece gizlendi. Klasörü göstermek sorunu çözdü.


Gizli dizin, kim thunk woulda.
Ian Newland


3

Bu benim için çalıştı:

  1. .Git klasörünü sağ tıklayın
  2. bilgi almak tıklayın
  3. kullanıcı için izin ayarla
  4. Cog simgesini tıklayın ve ekteki öğelere uygula'yı tıklayın

Artık izin reddedildi. 🎉


2

.gitİle dizinin sahibine ve grubuna bakın (önce .git'in üst dizinine gidin) ll .git, dizinin grubuna ve sahibine bakın, kullanıcılarınızı sahiplerinin grubuna ekleyinsudo usermod -a -G yourusername groupsofonwner , ardından logout => giriş yapın ve her şey iş .

Yani yaz aylarında

  1. git'in üst dizinine git

    $cd your path
    
  2. .gitdirecotry'nin grup sahibini bul

    $ll .git     
    
  3. kullanıcıyı bu gruba ekle

    $usermod -a -G yourusername ownergroupofgit
    
  4. Bu değişikliğin oturumunu kapatın ve sisteme giriş yapın.

  5. Tadını çıkar ;)


2

.Git klasörü gizlendiğinde ve içindeki tüm dosyalar da gizlendiğinde bu sorunu çözdüm. Özyinelemeli dosyalar güncellemesi olmadan yalnızca .git klasörünü gizli yapın ve çalışacaktır.


2

Bu hatanın nedenleri katları olabilir ama benim durumumda kök ile şube güncelledim sonra normal kullanıcı ile güncellemeye çalıştığımda bana hata veriyor.

sizin için çalışması gereken her iki çözümü de deneyin

1- sudo chmod g+w .git -R

eğer işe yaramazsa lütfen bir sonraki çözümü deneyin umarım sorununuzu çözecektir

2 - rm -f .git/FETCH_HEAD

1

Windows için git uzantılarını kullanırken bu mesajı aldım. Benim düzeltmem git uzantılarını kapatmak ve yönetici olarak tekrar açmaktı



1

Bu sorun, .git klasörüne yeterli izinleri vermediğinizde ortaya çıkar. Bu problemi çözmek için-

  1. Önce çalışma dizininize gidin.
  2. Bu komutu girin-

    sudo chmod a + rw .git -R

Umarım yardımcı olur..!!


1

Aynı hata vardı ama benim durumumda, sorun PHP sürümüne bir yükseltme sonra Apache yeniden inşa sonucu oldu. Uzun lafın kısası, 'suexec' Apache modülünü kurmayı unuttum.

Grup ya da mülkiyet ile hiçbir ilgisi yoktu. Anlamak sadece iki günümü aldı, biri beni vuracak ...


1

Benim durumumda NTFS diskinde proje klasörü olan bir çift önyükleme sistemi (Windows 10 ve Linux) vardı. Başka bir güncellemede Windows 10'un kendi ayarlarında "hızlı başlatma" tarafından etkinleştirildiği ortaya çıktı. Windows'ta işaretini kaldırdıktan sonra - Linux'ta "hata: .git / FETCH_HEAD: İzin reddedildi" açılmadı.


0

Bunu aldım çünkü kutumda 1'den fazla kullanıcı hesabım vardı. A kullanıcısı olarak oturum açtım ve B kullanıcısı için bir dizindeydim. A kullanıcısı, B kullanıcısının öğelerine izin vermedi. Dosya sisteminde olduğumu düşündüğüm yerde olmadığımı fark ettiğimde, bu hata mantıklı geldi.


0

Windows sunucusunda aynı sorunu bulursanız, komut satırını yönetici izni gibi yeterli izinle çalıştırmanız gerekir.


0

MacOS kullanıcısı için (High Sierra veya daha yüksek sürümse) şunu kullanın:

sudo chown -R $(whoami) $(brew --prefix)/*

-1

TL; DR: Çift Önyükleme sistemlerinde Windows için Hızlı Başlangıç'ı kapatın

Çift önyükleme Ubuntu / Windows sistemimde bu sorunu yaşıyordum. Windows (NTFS bölümleri) ile paylaşılan bölümlerin hiçbirine yazamadım.

Yakın zamanda her ikisini de yeniden yükledim ve Windows'taki "Hızlı Başlatma" yı kapatmayı unuttum . Windows'da yeniden başlattıktan sonra bu özelliği kapatıp yeniden başlattıktan sonra her şey normale döndü.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.