Git “fatal: remote origin already exists” hatasını çözmek için önce mevcut uzak depo bağlantısını incele. Adresi doğruysa bağlantıyı yeniden eklemene gerek yoktur; yanlışsa mevcut origin adresini git remote set-url komutuyla güncelleyebilirsin.
Bu hata neden oluşur ve origin ne anlama gelir?
Depo, yerel proje dosyalarının ve commit kayıtlarının tutulduğu Git çalışma alanıdır. Bu depoda origin adlı bir remote, yani yerel depoyla ilişkilendirilen uzak depo bağlantısı zaten tanımlıyken git remote add origin komutunu yeniden çalıştırırsan Git bu hatayı verir.
git remote add komutu, verdiğin adla bir uzak depo bağlantısı ekler. origin sık kullanılan varsayılan addır, özel bir bağlantı türü değildir. Hata mesajı, aynı adla ikinci bir bağlantı eklenmeye çalışıldığını belirtir; tek başına uzak depodaki dosyalarla ilgili bir sorun olduğunu göstermez. GitHub’ın uzak depo belgelerinde de bu hata, yerel depoda adın zaten kullanılıyor olmasıyla açıklanır.
$ git remote add origin https://github.com/OWNER/REPOSITORY.git
fatal: remote origin already exists.
Bu hatayı çözmek için .git klasörünü silme. Bu klasör Git deposunun verilerini ve commit geçmişi için gereken kayıtları içerir; silinmesi yerel commit geçmişini kaybettirebilir. Önce tanımlı bağlantıyı kontrol etmek, sonra gerekiyorsa adresini değiştirmek daha güvenlidir.
Mevcut uzak bağlantıları nasıl görürsün?

git remote -v komutu tanımlı uzak bağlantı adlarını ve her biri için fetch ile push adreslerini listeler. Fetch adresi, Git’in güncellemeleri hangi depodan alacağını; push adresi ise gönderimleri hangi depoya yapacağını gösterir.
$ git remote -v
origin https://github.com/OWNER/REPOSITORY.git (fetch)
origin https://github.com/OWNER/REPOSITORY.git (push)
Çıktıyı incelerken önce remote adının origin olup olmadığına, sonra URL’deki sunucu ve depo adının hedeflediğin depoyla eşleşip eşleşmediğine bak. Fetch ve push satırlarını da ayrı ayrı kontrol et; ikisi aynı adresi gösterebilir, ancak önemli olan ikisinin de amaçlanan depoya yönelmesidir. Git’in git remote komutu için resmi belgesi bu görünümde uzak adların yanında URL’lerin de listelendiğini açıklar.
Yanlış origin adresini git remote set-url ile düzelt

origin yanlış depo adresini gösteriyorsa bağlantıyı silmeden git remote set-url komutuyla adresini değiştirebilirsin. Aşağıdaki örnekte her iki adres de HTTPS biçimindedir ve temsili adresler kullanılmıştır.
Önce yanlış adresin eklendiğini, ardından doğru adresle yeniden ekleme denemesinin hata verdiğini görebilirsin. Başarılı ekleme komutunun çıktısı boş kalır; aynı remote adını tekrar eklemeye çalışınca Git şu hatayı verir:
$ git remote add origin https://example.com/kullanici/eski-proje.git
$ git remote add origin https://example.com/kullanici/proje.git
fatal: remote origin already exists.
Adres değişikliği için set-url kullan. Komut başarılı olduğunda ayrıca bir mesaj yazmayabilir; bu nedenle hemen ardından git remote -v ile kayıtlı adresi kontrol et. Çıktıda hem fetch hem push satırlarının doğru adresi göstermesi beklenir.
$ git remote set-url origin https://example.com/kullanici/proje.git
$ git remote -v
origin https://example.com/kullanici/proje.git (fetch)
origin https://example.com/kullanici/proje.git (push)
HTTPS kullanıyorsan doğru depo için HTTPS adresini, SSH kullanıyorsan SSH adresini bütünüyle kullan. İki biçimin parçalarını karıştırmak bağlantı sorunlarına yol açabilir. Git’in resmî remote komut belgesi, adresi değiştirme ve mevcut bağlantıları listeleme seçeneklerini açıklar.
Remote bağlantısını silip yeniden ekle veya yeni ad kullan
Yanlış origin bağlantısını kaldırıp yeniden eklemek de mümkündür. git remote remove origin yalnızca yerelde kayıtlı uzak bağlantıyı kaldırır; ardından aynı adı doğru HTTPS adresiyle ekleyebilirsin. Bu komutlar başarılı olduğunda terminal genellikle ek bir çıktı göstermez.
$ git remote remove origin
$ git remote add origin https://example.com/kullanici/proje.git
$ git remote -v
origin https://example.com/kullanici/proje.git (fetch)
origin https://example.com/kullanici/proje.git (push)
Bu ayarı düzeltmek için proje klasöründeki .git klasörünü silme. Bu klasörü kaldırmak, yerel commit geçmişine erişimini ve Git’in proje takibini kaybettirebilir.
Aynı projeye ikinci bir uzak depo eklemen gerekiyorsa origin adını yeniden kullanmak yerine farklı bir ad seçebilirsin. Örneğin, başka bir depo adresini yedek adıyla eklemek için şu komutu çalıştır:
$ git remote add yedek https://example.com/ekip/proje-arsiv.git
$ git remote -v
origin https://example.com/kullanici/proje.git (fetch)
origin https://example.com/kullanici/proje.git (push)
yedek https://example.com/ekip/proje-arsiv.git (fetch)
yedek https://example.com/ekip/proje-arsiv.git (push)
Bağlantıyı uzaktaki depoya gönderim yaparak da sınayabilirsin. Aşağıdaki örnek, yerel dalın adı main ise ve uzak depoya yazma iznin varsa kullanılabilir. Çıktı dalın durumuna ve uzak deponun içeriğine göre değişir; örnekte yeni dalın gönderildiği gösteriliyor.
$ git push origin main
To https://example.com/kullanici/proje.git
* [new branch] main -> main
Yerel dalının adı farklıysa komutta main yerine o adı yaz. Gönderim reddedilirse uzak depodaki değişiklikler, dal ayarları veya erişim izni gibi koşulları ayrıca kontrol et. Git’in remote çalışma rehberi, bağlantı ekleme, kaldırma ve uzak depoya gönderim örneklerini içerir.
Yaygın yanlışlardan nasıl kaçınırsın?
.git klasörünü bu hata yüzünden silme. Bu klasör yerel Git deposunun yapılandırmasını ve commit kayıtlarına erişmek için gereken verileri tutar; silinmesi commit geçmişini ve henüz uzak depoya gönderilmemiş commitleri kaybettirebilir. Yerel klasörü silmek uzaktaki depodaki kopyayı kendiliğinden silmez, ancak yalnızca yerelinde bulunan commitlerin başka bir kopyası olmayabilir.
HTTPS ve SSH adreslerini de birbirine karıştırma. İkisi uzak depoya bağlanmak için kullanılan farklı adres biçimleridir ve kimlik doğrulama ayarları seçtiğin bağlantı türüne göre değişebilir. Adresi güncelledikten sonra git remote -v komutuyla origin için tanımlanan adresleri kontrol et. Komut, uzak bağlantı listesini ve getirme ile gönderme için kullanılan adresleri gösterir. Ayrıntılar için Git’in resmî remote belgelerine bakabilirsin.
Örneğin komut ve temsili terminal çıktısı şöyle görünür:
$ git remote -v
origin https://github.com/kullanici/proje.git (fetch)
origin https://github.com/kullanici/proje.git (push)
Son kontrol için şu listeyi kullanabilirsin:
originadresinin doğru uzak depoya ait olduğunu doğrula.- HTTPS veya SSH biçimlerinden kullandığınla eşleştiğini kontrol et.
- Adres değişikliğinden sonra getirme ve gönderme adreslerinin ikisini de incele.
- Yerel commitlerin varsa
.gitklasörünü silmek yerine mevcut bağlantıyı düzelt.
Bu kontroller, uzak bağlantıyı düzeltirken yerel commit geçmişini korumana yardımcı olur.