{count, plural, one {Kurs} other {Kurs}}
Git, dosyalardaki değişiklikleri zaman içinde izlemek için yazılım geliştirmede kullanılan popüler bir sürüm kontrol sistemi (VCS)’dir. Geliştiricilerin birbirlerinin katkılarını üzerine yazmadan eşzamanlı çalışmasına olanak tanıyarak iş birliğini kolaylaştırır. Tüm geliştiriciler projenin geçmişinin eksiksiz yerel kopyalarına sahip olduğundan, bireyler çevrimdışı bağımsız çalışabilir ve hazır olduklarında değişikliklerini güvenle birleştirebilirler.
Bir uzak depo (remote repository) ya da kısaca remote, Git projenizin GitHub veya BitBucket gibi çevrimiçi bir barındırma hizmeti üzerinden bulutta tutulan sürümüdür.
Bu yazıda Git remote’larını daha ayrıntılı inceleyeceğiz. Git’e yeni başlıyorsanız, başlangıç seviyesi Git eğitimimizi okumanızı öneririz.
Git Remote Nedir?
Bir Git remote, bir deponun depolanabileceği, paylaşılabileceği ve başkaları tarafından erişilebileceği merkezi bir konum sağlar. Kullanıcılar yerel değişikliklerini remote’a push edebilir ve ekip arkadaşlarının remote üzerinde yaptığı güncellemeleri pull ile alabilir. Remote’lar ayrıca kodun yedeklenmesi ve üretim ortamlarına dağıtılması için de kullanışlıdır.
Bir yerel depo (local repository) kendi bilgisayarınızda bulunur; böylece kod yazabilir, commit atabilir ve değişiklikleri yerelde test edebilirsiniz. Çevrimiçi konumda bulunan bir uzak depo ise kodu paylaşmak, diğerleriyle iş birliği yapmak ve çalışmalarınızı yedeklemek için kullanılır. Bu yazıda, Git komutlarını kullanarak yerel ve uzak depolar arasındaki değişiklikleri nasıl senkronize edeceğimizi göreceğiz.
Git iş akışı
Tipik bir Git iş akışı, uzak bir depoyu yerel makinenize “klonlayarak” başlar. Klonladıktan sonra bir özellik veya hata düzeltmesi üzerinde çalışmak için yeni bir dal (branch) oluşturabilir, değişiklikler yapabilir ve bunları yerelde commit edebilirsiniz.
Çalışmanız hazır olduğunda, dalı remote’a “push” eder ve inceleme için bir pull request açarsınız. Onaylandıktan sonra değişiklikleri ana dala (main) birleştirin.
Süreç boyunca, yerel deponuzu remote ile senkron tutmak için düzenli olarak “pull” yaparsınız.

Tipik bir Git iş akışı (Görsel: Introduction to Git Course)
Bu sürece biraz daha yakından bakalım.
Depo klonlama
Diyelim ki uzak bir deponun kopyasını oluşturmak istiyorsunuz; bu işleme depoyu “klonlama” denir. Yerel bir kopyayla kodu değiştirebilir ve yeni özellikleri test edebilirsiniz.
Git kullanmak için kurulu olduğundan emin olun, ardından bir terminal açıp şu komutu kullanın: git clone <URL>.
Örneğin, kullanıcı adı “datacamp” olan bir GitHub sayfasından “project” adlı bir projeyi klonlamak için şunu kullanın
git clone https://github.com/datacamp/project.git
Varsayılan remote: 'origin'
Bir depoyu klonladığınızda, Git origin adlı varsayılan bir remote oluşturur. Bu origin etiketi, klonladığınız deponun URL’si için bir takma ad (alias) görevi görür.
Tipik Git iş akışlarında git push veya git pull gibi komutları çalıştırdığınızda, farklı bir remote belirtmediğiniz sürece Git sizin origin’i kastettiğinizi varsayar. Bu, yerel kopyanızla paylaşılan depo arasındaki değişikliklerin senkronizasyonunu basitleştirir. Push ve pull işlemlerine bu yazının ilerleyen bölümlerinde daha yakından bakacağız.
Git Remote’ları Yönetme
Yaygın remote yönetimi görevleri arasında, git remote ile mevcut remote’ları görüntülemek ve git remote add ile yeni bir remote eklemek bulunur.
Mevcut remote’ları görüntüleme
Mevcut remote’ları görüntülemek için git remote komutunu kullanın.
git remote
>> origin
Örneğimizde origin adlı remote takma adı listelenir, ancak URL’si gösterilmez. Her remote ile ilişkili URL’yi görmek isterseniz -v bayrağını kullanın.
git remote -v
>> origin https://github.com/datacamp/project.git (fetch)
>> origin https://github.com/datacamp/project.git (push)
Yeni bir remote ekleme
Yerel deponuzu başka bir remote ile bağlamak isteyebilirsiniz. Örneğin, bir projeyi fork’ladıysanız, main remote’undaki değişikliklere ek olarak orijinal depodaki değişiklikleri de takip etmek isteyebilirsiniz. Ya da kodunuzu GitHub ve GitLab gibi birden fazla platforma push etmek isteyebilirsiniz.
Yeni bir remote eklemek için git remote add <name> <URL> komutunu kullanın. new_remote adlı yeni bir remote ekleyelim.
git remote add new_remote https://github.com/datacamp/project
Remote’a isim vermek, birleştirme yaparken URL’yi tekrar tekrar yazma ihtiyacını ortadan kaldırdığı için kullanışlıdır.
Remote’ları yeniden adlandırma ve kaldırma
Bir remote’u yeniden adlandırmak basittir. git remote rename <old-name> <new-name> komutunu kullanın. Örneğin,
git remote rename new_remote original_remote
Remote’un yeniden adlandırıldığını doğrulamak için git remote ile remote’ları listeleyin.
Bir remote’u kaldırmak için git remote remove <name> komutunu kullanın. Örneğimiz için:
git remote remove new_remote
Şimdi, doğrulamak için remote’ları listeleyin.
git remote
>> origin
Gördüğümüz tek remote origin.
Uzak Dallarla Çalışma
Git’te bir branch (dal), projenizin ana sürümünden (main) bağımsız bir yoldur ve değişiklikleri ana sürümden ayrı çalışmanızı sağlar. Çalışmanız tamamlanıp incelendikten sonra dalı tekrar ana projeye birleştirebilirsiniz.
Uzak dalları listeleme
Uzak dalları listelemek için git branch -r komutunu kullanırız.
git branch -r
>> origin/HEAD -> origin/main
>> origin/main
Çıktıyı yorumlayalım. origin/main satırı, origin remote’unda main adlı bir uzak dal olduğunu gösterir. origin/HEAD -> origin/main satırı ise remote üzerindeki varsayılan dalın origin/main olduğunu belirtir. Yani bu çıktı, origin remote’undaki varsayılan dalın main olduğunu ve şu anda listelenen tek uzak dalın bu olduğunu anlatır.
Uzak bir dalı izleme
Kodunuzu senkron tutmak için sıklıkla bir yerel dalı uzak bir dala bağlamak isteyeceksiniz. Bir yerel dal uzak bir dalı izlediğinde, her seferinde remote ve dal adlarını belirtmenize gerek kalmadan değişiklikleri pull ve push edebilirsiniz.
Git ayrıca yerel dalınızın uzak dalın ne kadar ilerisinde veya gerisinde olduğunu takip eder; bu da değişiklikleri yönetmeyi kolaylaştırır.
git checkout --track origin/<branch-name> komutu, belirtilen uzak dalı izleyen yeni bir yerel dal oluşturur. <branch-name> ile aynı ada sahip bir yerel dal ayarlar ve bunu uzak sürümüyle ilişkilendirir. Böylece gelecekteki git pull ve git push komutları otomatik olarak doğru uzak dal ile etkileşime girer. Git Push ve Pull hakkında eğitimimizden daha fazla bilgi edinebilirsiniz.
Remote’lardan fetch ve pull
Yerel dalınızı diğer geliştiricilerin değişiklikleriyle senkron tutmak için içeriği yerel dalınıza çekmeniz gerekir. “Pull” işlemi, remote üzerindeki ilgili daldaki en yeni değişiklikleri indirip bunları söz konusu dalın yerel sürümünüzle birleştirmek anlamına gelir. Bu, en güncel kodla çalışmanızı sağlar.
Diyelim ki origin adlı remote’tan tüm dalları çekmek istiyoruz. Bu, git fetch origin komutuyla yapılır. Yalnızca belirli bir dalı, örneğin main dalını fetch etmek istiyorsanız, git fetch origin main şeklinde belirtin.
Fetch ettikten sonra, getirilen değişiklikleri mevcut yerel dalınıza merge ederek içeriği yine de senkronize etmeniz gerekir. Bunu yapmak için, fetch ettiğiniz dalın adını <branch-name> ile değiştirerek git merge origin/<branch-name> komutunu çalıştırın. Örneğin, uzak main dalındaki değişiklikleri birleştirmek için git merge origin/main kullanırsınız.
Fetch ve merge işlemlerinin ardışık yapılması yaygın olduğundan, Git her ikisini birden yapan tek bir komut sunar: git pull. Örneğin, origin adlı remote üzerindeki main dalından değişiklikleri fetch edip merge etmek için git pull origin main kullanabilirsiniz.
fetch ve merge ne zaman, pull ne zaman kullanılmalı? fetch ve merge’den oluşan iki adımlı süreç güncelleme işlemi üzerinde size daha fazla kontrol sağlar. Fetch, uzak depoda nelerin değiştiğini yerel dalınıza birleştirmeden önce görmenize imkan tanır. Bu, güncellemeleri incelemek, farkları karşılaştırmak veya olası çakışmaları dikkatle ele almak istediğinizde faydalıdır.
Uzak değişikliklerin hemen merge edilebileceğinden eminseniz ve dalınızı hızlıca güncellemek istiyorsanız pull kullanın. Kullanışlıdır ve iki adımı tek bir işlemde birleştirir; ancak merge gerçekleşmeden önce size daha az görünürlük sunar.
Uzak bir depoya push etme
Yerel bir daldan remote’a “push” etmek, yerel değişikliklerinizi uzak depodaki karşılık gelen dala göndermek anlamına gelir. Bu, uzaktaki depoyu son çalışmalarınızla günceller; böylece diğerleri görebilir, pull edebilir veya üzerine inşa edebilir. Push etmek katkılarınızı paylaşır ve proje üzerinde çalışan herkes için uzak deponun güncel kalmasına yardımcı olur.
Yerel değişiklikleri remote’a yüklemek üç adımlı bir süreçtir.
1. Dahil etmek istediğiniz dosyaları hazırlamak (stage etmek) için git add kullanın. Tüm değişiklikleri eklemek için
git add
Belirli bir dosya eklemek için dosya adını belirtin.
git add <filename>
2. Değişikliklerinizi commit edin. Ne yaptığınızı açıklayan bir mesaj ekleyin.
git commit -m “Your commit message here”
3. Remote’a push edin.
git push origin branch-name
Pratik Örnekler
Bazı pratik örneklere bakalım: bir depoyu klonlama ve birden çok remote ile iş birliği.
Bir depoyu klonlama
Bir depoyu klonlamak için adım adım bir rehber:
- Depo URL’sini alın. Klonlamak istediğiniz deponun URL’sini kopyalayın. Bu URL, GitHub veya BitBucket gibi bulut sağlayıcınızda mevcuttur.
- Bir dizin seçin. Depoyu kopyalamak istediğiniz bilgisayarınızdaki klasöre gidin.
- Depoyu klonlayın.
git clone <URL>komutunu çalıştırın. Örneğin,git clone https://github.com/datacamp/projectçalıştırın.Bu, içinde depo içeriği bulunan project adlı yeni bir klasör oluşturur. - Yapılandırılmış remote’ları listeleyin. Klonladıktan sonra,
git remotekomutuyla remote’ları kontrol edin.Örneğimizde, klonladığınız remote için Git’in varsayılan verdiği ad olanoriginve onun URL’sini göreceksiniz.
Birden çok remote ile iş birliği
Açık kaynak bir projeye katkıda bulunurken veya kişisel bir kopya (fork) üzerinden iş birliği yaparken, iki remote ile çalışmak yaygındır: sizin deponuz olan origin ve fork’ladığınız depo olan upstream. Genellikle origin için yazma izniniz vardır, ancak upstream için yoktur.
Birden çok remote yönetirken akılda tutulması gereken bazı iyi uygulamalar vardır.
upstreamremote’u ekleyin. Fork’unuzu klonladıktan sonra orijinal depoyu upstream olarak takip edin:git remote add upstream <URL>.- Fork’unuzu güncel tutun. Upstream depodan düzenli olarak git fetch upstream komutuyla değişiklikleri çekin. Ardından bu değişiklikleri yerel dalınıza merge edin veya rebase yapın.
upstreamdepoya push etmekten kaçının. Genellikle upstream depoya push erişiminiz yoktur (ya da gerekmez). Tüm değişikliklerinizorigin’e push edilmeli ve pull request’ler oradan açılmalıdır.- Açıklayıcı dal adları kullanın. Yerel dallarınızı düzenli tutun. Üzerinde çalıştığınız özellik veya konunun (issue) adına göre adlandırmak iyi bir fikirdir.
- Remote’larınızı kontrol edin. Uzaktan yapılandırmanızı gözden geçirmek ve
originileupstreamiçin URL’lerin doğru olduğunu doğrulamak üzeregit remote -vkullanın. - Çalışmaya başlamadan önce senkron kalın. Yeni çalışmaya başlamadan önce, güncel kalmak ve ileride çatışmaları önlemek için upstream’den ana dalınıza en son değişiklikleri her zaman çekin.
Git Remote En İyi Uygulamalar ve İpuçları
Git remote kullanırken izlemeniz gereken bazı en iyi uygulamalar şunlardır:
Remote’ları güncel tutma
Düzenli olarak değişiklikleri fetch etmek, deponuzun yerel kopyasının remote sürümüyle güncel kalmasına yardımcı olur. git fetch çalıştırarak, mevcut dalınızı etkilemeden uzaktan gelen yeni değişiklikleri indirirsiniz.
Bu, ekip arkadaşlarınızın neler push ettiğini fark etmenizi sağlar, değişiklikleri karşılaştırmanıza imkân tanır ve gerekli güncellemeler veya birleştirmeler için hazırlık yapmanıza yardımcı olur. Tutarlı fetch işlemleri, çatışma olasılığını azaltır ve iş birliği iş akışınızın sorunsuz ilerlemesini sağlar.
Zamanla, uzak depodan dallar silindikçe, yerel Git kurulumunuz bu eski dalları uzak-izleme dalları (remote-tracking branches) olarak göstermeye devam edebilir. Bunlar “bayat” (stale) uzak-izleme dalları olarak bilinir.
Dallarınızı temizlemek için, artık origin remote’unda var olmayan uzak-izleme dallarını kaldırmak üzere git remote prune origin çalıştırın.
Bunu düzenli yapmak, yerel deponuzu düzenli tutmanıza, ilgili dalları daha kolay bulmanıza ve eski çalışmalara referans vermemenize yardımcı olur.
Remote’larla çatışmaları ele alma
Uzak çatışmalarını çözmek zor olabilir. En iyi çözüm, aynı anda birden fazla kişinin kodun aynı bölümleri üzerinde çalışmamasını sağlayarak bunları önlemektir. Ancak bu her zaman mümkün değildir.
Tüm iyi niyetlere rağmen çatışmalar olabilir. Olduğunda, bunları etkili bir şekilde ele almak için şu planı izleyin:
- Dikkatinizi gerektiren çatışmaları görmek için
git statuskullanın. - Çatışmalı dosyaları açın ve değişiklikleri çözmek için düzenleyin.
- Bir birleştirme aracı kullanın. VS Code veya
git mergetoolgibi araçlar, yan yana karşılaştırmalar gösterir ve kodun hangi sürümünün tutulacağını seçmenize olanak tanır. - Ekip ile iletişim kurun. Çatışma net değilse, sorunu çözmeden önce ekip arkadaşlarınıza danışın. Hangi satırların tutulup hangilerinin kaldırılacağını anladığınızdan emin olun.
- Çatışmayı çözdükten sonra kodunuzu test edin; hiçbir şeyin bozulmadığından ve her şeyin beklendiği gibi çalıştığından emin olun.
- Değişikliklerinizi commit edin. Tüm çatışmaları çözdükten sonra dosyaları stage edin ve merge’ü tamamlamak için bir commit yapın.
Rebase
git pull --rebase kullanmak, değişikliklerinizi en son uzak commit’lerin üzerine uygulayarak karmaşık merge çatışmalarının olasılığını azaltabilir.
git pull --rebase kullandığınızda, Git önce uzaktan en son değişiklikleri fetch eder, ardından yerel commit’lerinizi sanki çalışmanız sonradan yapılmış gibi üstüne uygular.
Bu yaklaşım daha temiz, doğrusal bir commit geçmişi oluşturmaya yardımcı olur ve dağınık merge çatışmalarının olasılığını azaltabilir.
Geçmişleri birleştiren bir merge commit’i oluşturmak yerine, rebase değişikliklerinizi uzak güncellemelerden sonra yapılmış gibi gösterir. Daha fazlası için Git Rebase eğitimimizi inceleyin.
Sonuç
Git remote’ları, yerel depoları paylaşılan kod tabanlarına bağlayarak iş birliğine dayalı geliştirme için kritik öneme sahiptir. Bu rehberde, kurulumdan başlayarak fetch, pull ve push komutlarıyla senkronizasyona ve birden çok uzak bağlantının yönetimine kadar temel remote işlemlerini ele aldık.
Ele aldığımız kavramlara hâkim olmak, daha verimli iş birliği yapmanıza, net bir proje geçmişi korumanıza ve geliştirme ekibinize katkıda bulunmanıza yardımcı olabilir.
Git uzak dallarıyla ilgili daha fazla bilgi için DataCamp’in kaynaklarına göz atın.
- Git Checkout Remote Branch: Adım Adım Rehber
- Git Push ve Pull Eğitimi
- Git Pull Force: Yerel Bir Dalı Uzakla Nasıl Ezersiniz
- Introduction to Git Course
- Intermediate Git Course
- Advanced Git Course
- Introduction to GitHub Concepts
- GitHub ve Yeni Başlayanlar için Git Eğitimi
- 2025’te Git Nasıl Öğrenilir: Yeni Başlayanlar için Eksiksiz Rehber
- Git Cheat Sheet
Git Remote SSS
Git remote nedir?
Git remote, genellikle GitHub, GitLab veya Bitbucket gibi platformlarda bir sunucuda barındırılan bir depoya bağlantıdır.
Bir depoyu klonladığınızda remote’un adı nedir?
Varsayılan olarak remote, origin şeklinde kısaltılır.
Hangi remote’ların yapılandırıldığını nasıl görürüm?
git remote -v komutu, projenize bağlı tüm remote’ların adlarını ve URL’lerini gösterir.
Yeni bir remote nasıl eklerim?
git remote add <name> <url> komutunu kullanın. Örneğin,
git remote add upstream https://github.com/user/project.git
Yanlış remote’a push edersem ne olur?
Değişikliklerinizi yanlış depoya gönderirsiniz. git remote -v komutuyla remote adlarınızı iki kez kontrol etmeniz iyi bir fikirdir.
