dev-tools
Sözlük ↗Git
Git, 2005 yılında Linus Torvalds tarafından (başlangıçta Linux çekirdeğinin kaynak kodunu yönetmek için) oluşturulan ve yazılım projelerindeki değişiklikleri izlemek için fiili standart haline gelen dağıtık bir sürüm kontrol sistemidir. "Dağıtık" olması, daha eski sistemlerden ayıran temel mimari farktır: her geliştiricinin yerel kopyası, yalnızca en son anlık görüntüyü değil, tüm proje geçmişini içerir; bu da çoğu işlemi hızlı ve çevrimdışı yapılabilir hale getirir ve sistemi dayanıklı kılar (tek bir arıza noktası yoktur — herhangi bir kopya tam geçmişi geri yükleyebilir). Git'in kendisi yalnızca temel motordur; GitHub, GitLab ve Bitbucket gibi platformlar bunun üzerine barındırma, çekme istekleri, sorun takibi ve CI/CD ekler. AI/SaaS geliştiricileri için önemi: Git fiilen zorunlu bir altyapıdır — neredeyse her CI/CD sistemi, kod inceleme iş akışı ve dağıtım ardışık düzeni altta Git'i varsayar ve AI kodlama ajanları (Claude Code, Copilot, Cursor) hepsi Git depolarını okuyup yazarak ve commit'ler/diff'ler üreterek çalışır. Temel Git kavramlarına (commit'ler, dallar, birleştirmeler, rebase'ler) hâkimiyet, modern bir kod tabanındaki herhangi bir teknik işbirlikçi için neredeyse bir temel gereklilik haline gelmiştir. Nasıl çalışır: Git, içeriği değişmez, içerik adresli nesnelerden oluşan bir grafik olarak izler — her commit, içeriğinin ve meta verisinin bir SHA-1/SHA-256 hash'i ile tanımlanır ve o anlık görüntüdeki dosya ağacına artı üst commit'ine/commit'lerine işaret eder. Bir dal, yalnızca bir commit'e hareketli bir işaretçidir; bir dalı "checkout" etmek, çalışma dosyalarınızı o commit'in anlık görüntüsüyle eşleşecek şekilde günceller. Yaygın komutlar: `git add` değişiklikleri hazırlar, `git commit` bunları anlık görüntüye alır, `git branch`/`git checkout -b` dallar oluşturur ve arasında geçiş yapar, `git merge` dal geçmişlerini birleştirir, `git rebase` doğrusal bir geçmiş için commit'leri yeni bir taban üzerine yeniden oynatır ve `git push`/`git pull` bir uzak sunucuyla senkronize eder. Uygulamalı örnek: bir hatayı düzelten bir geliştirici, auth dosyasına dokunan her commit'i görmek için `git log --oneline -- src/auth.js` çalıştırır, bir regresyona neden olan commit'i tespit eder ve tam olarak neyin değiştiğini görmek için `git show a1b2c3d` çalıştırır. Bunun suçlu olduğunu doğrular, ardından ya `git revert a1b2c3d` ile temiz bir şekilde geri alır (geçmişi koruyarak değişikliği geri alan yeni bir commit oluşturur) ya da başka bir daldan `git cherry-pick f4e5d6c` ile bir düzeltmeyi seçerek uygular. Her ekip arkadaşının kopyası aynı tam geçmişe sahip olduğundan, ekipteki herkes özel sunucu erişimi olmadan aynı araştırmayı bağımsız olarak yapabilir — merkezi bir operasyon ekibine bilet açmadan, sunucu izinlerini beklemeden, sadece soruyu saniyeler içinde yanıtlayan yerel bir Git komutuyla.
İlgili terimler