Git Push Permission Denied Hatası Nasıl Çözülür?
git push komutunu çalıştırırken Permission Denied hatası alıyorsanız GitHub, göndermeye çalıştığınız repository için hesabınızı doğrulayamıyor veya hesabınızın yazma yetkisi bulunmuyor olabilir.
Sorunu çözmeden önce repository'nin HTTPS mi yoksa SSH üzerinden mi kullanıldığını belirlemek gerekir.
1. Repository bağlantısını kontrol edin
Terminalde:
git remote -vkomutunu çalıştırın.
Adres şu şekildeyse HTTPS kullanıyorsunuz:
https://github.com/kullanici/proje.gitŞuna benziyorsa SSH kullanıyorsunuz:
git@github.com:kullanici/proje.gitÇözüm yöntemi kullandığınız bağlantı türüne göre değişebilir.
2. Repository size ait mi kontrol edin
GitHub'daki repository'nin hangi hesaba veya organizasyona ait olduğunu kontrol edin.
Başka bir kullanıcıya ait repository'ye değişiklik göndermeye çalışıyorsanız hesabınızın gerekli yazma yetkisine sahip olması gerekir.
Sadece repository'yi görüntüleyebilmeniz
push yetkinizin olduğu anlamına gelmez.3. Yanlış GitHub hesabıyla giriş yapılmış olabilir
Bilgisayarınızda birden fazla GitHub hesabı kullanıyorsanız kayıtlı kimlik bilgileri farklı bir hesaba ait olabilir.
Örneğin repository birinci hesabınıza aitken Git ikinci hesabınızın kimlik bilgilerini kullanıyorsa push işlemi reddedilebilir.
Bu durumda hangi hesabın kullanıldığını ve repository erişim yetkilerini kontrol edin.
4. HTTPS kullanıyorsanız hesap şifresini kullanmayın
GitHub, Git işlemlerinde normal hesap şifresiyle yapılan eski kimlik doğrulama yöntemini desteklemez.
HTTPS bağlantısında uygun GitHub kimlik doğrulama yöntemi kullanılmalıdır.
Kullandığınız Git istemcisine göre Git Credential Manager, kişisel erişim belirteci veya desteklenen başka bir GitHub kimlik doğrulama yöntemi kullanılabilir.
Erişim belirteçlerini şifre gibi koruyun ve hiçbir zaman proje dosyalarına veya public repository'ye eklemeyin.
5. Remote adresi yanlış olabilir
Mevcut adresi kontrol edin:
git remote -vYanlış repository tanımlanmışsa uygun adresle değiştirebilirsiniz:
git remote set-url origin YENI_REPOSITORY_ADRESIArdından:
git remote -vile değişikliği tekrar kontrol edin.
6. SSH kullanıyorsanız anahtarınızı kontrol edin
SSH bağlantısında GitHub hesabınıza tanımlanmış uygun bir SSH anahtarı bulunmalıdır.
Bağlantıyı test etmek için:
ssh -T git@github.comkomutu kullanılabilir.
Kimlik doğrulama başarısız oluyorsa SSH anahtarınızın:
- Bilgisayarda mevcut olması
- Doğru GitHub hesabına eklenmesi
- SSH tarafından kullanılabilmesi
kontrol edilmelidir.
7. Permission denied publickey hatası farklıdır
Hata mesajınız:
Permission denied (publickey)şeklindeyse sorun büyük olasılıkla SSH kimlik doğrulamasıyla ilgilidir.
Bu durumda repository yazma yetkisinden önce SSH anahtarının doğru oluşturulduğunu, GitHub hesabına eklendiğini ve bağlantıda kullanıldığını kontrol etmek gerekir.
8. Repository organizasyona aitse ek izinler gerekebilir
Repository bir GitHub organizasyonuna aitse hesabınızın repository üzerinde uygun yetkiye sahip olması gerekir.
Organizasyonun güvenlik politikalarına bağlı olarak ek kimlik doğrulama veya erişim gereksinimleri de bulunabilir.
Bu durumda organizasyon yöneticisinin verdiği yetkileri kontrol edin.
9. Branch koruması nedeniyle push reddedilebilir
Repository'ye erişiminiz olduğu halde yalnızca belirli bir branch'e push yapamıyorsanız branch kuralları uygulanıyor olabilir.
Örneğin doğrudan
main branch'ine gönderim sınırlandırılmış olabilir.Bu durumda yeni bir branch oluşturup değişiklikleri oraya göndererek pull request sürecini kullanmanız gerekebilir.
Bu durum klasik Permission Denied hatasından farklı olsa da push işleminin yetki nedeniyle engellendiği senaryolardan biridir.
10. Git kullanıcı adı ile GitHub giriş hesabını karıştırmayın
Şu komutlar:
git config --global user.namegit config --global user.emailcommit'lerin hangi isim ve e-posta bilgisiyle oluşturulacağını belirler.
Bunları değiştirmek tek başına GitHub kimlik doğrulama problemini çözmez.
Git kimliği ile GitHub'a bağlanırken kullanılan kimlik doğrulama bilgileri farklı kavramlardır.
11. Repository taşındıysa veya yeniden adlandırıldıysa
Repository başka hesaba taşındıysa veya adresi değiştiyse eski remote bağlantısı problem oluşturabilir.
Yeni repository adresini GitHub üzerinden kontrol ettikten sonra:
git remote set-url origin YENI_ADRESkomutuyla güncelleyebilirsiniz.
12. Force push çözüm değildir
Permission Denied hatası aldığınızda:
git push --forcekullanmak erişim problemini çözmez.
Force push farklı bir işlemdir ve özellikle ortak kullanılan repository'lerde commit geçmişine zarar verebilir.
Yetki problemini doğru kimlik doğrulama ve repository izinlerini düzelterek çözün.
Hızlı kontrol sırası
Permission Denied hatasında şu sırayla ilerleyebilirsiniz:
1.
git remote -v ile bağlantıyı kontrol edin.2. HTTPS mi SSH mı kullandığınızı belirleyin.
3. Repository'nin doğru hesap veya organizasyona ait olduğunu kontrol edin.
4. GitHub hesabınızın yazma yetkisini doğrulayın.
5. HTTPS kullanıyorsanız kimlik doğrulama bilgilerini kontrol edin.
6. SSH kullanıyorsanız SSH anahtarını test edin.
7. Branch üzerinde ek kısıtlama olup olmadığını kontrol edin.
8. Ardından tekrar
git push deneyin.Git hatalarında mesajın tamamı önemlidir. Forumda yardım isterken çalıştırdığınız
git push komutunu, git remote -v çıktısındaki repository adresini kişisel bilgileri gizleyerek ve aldığınız hata mesajının tamamını paylaşmanız sorunun daha hızlı teşhis edilmesini sağlar.