Git Nedir? Nasıl Çalışır, Avantajları ve Pratik Kullanım Örnekleri
Git, yazılım kodunun tüm değişikliklerini kaydeden ve yöneten bir versiyon kontrol sistemidir. Geliştiriciler kodun geçmiş sürümlerine erişebilir, değişiklikleri takip edebilir ve ekip halinde çalışabilirler. Açık kaynak olan Git, dağıtık mimarisiyle lokal ve merkezi depoları yönetmeyi mümkün kılar.
Git, yazılım geliştirme sürecinde kod dosyalarının tüm değişikliklerini kaydeden, takip eden ve yöneten açık kaynak dağıtık versiyon kontrol sistemidir. Her değişiklik kayıtlı olduğu için geliştiriciler istediği zaman önceki versiyonlara geri dönebilir, paralel çalışma yapabilir ve değişiklikleri yönetebilir. Git, profesyonel yazılım projelerinde standart araç haline gelmiştir.
Git Nasıl Çalışır?
Git, üç temel katman üzerinde çalışır: çalışma dizini (Working Directory), hazırlama alanı (Staging Area) ve depo (Repository).
Çalışma Dizini, bilgisayarınızda bulunan projenizin dosyalarının bulunduğu klasördür. Burada kod yazarken değişiklikleri yaparsınız. Hazırlama Alanı, Git'e hangi değişiklikleri kaydetmek istediğinizi belirttiğiniz alandır. Tüm değişiklikleri kaydetmeyebilirsiniz; seçtiğiniz dosyaları "stage" edersiniz. Depo ise tüm commit'lerin (kayıtların) tutulduğu veri tabanıdır.
Temel akış şöyle çalışır:
- Kod dosyalarında değişiklik yaparsınız (Çalışma Dizini)
- Değişiklikleri hazırlama alanına eklersiniz (git add komutu)
- Hazırlanan değişiklikleri depoya kaydedersiniz (git commit komutu)
- Değişiklikleri uzak sunucuya gönderirsiniz (git push komutu)
Her commit'in bir kimlik numarası (hash), yazarı, tarihi ve açıklaması vardır. Bu sayede projenin geçmiş tamamı saklanır ve herhangi bir noktaya dönüş mümkündür.
Git'in Temel Kavramları
- Repository (Depo): Projenizin tüm dosyalarını ve geçmişini depolayan yer. Yerel (bilgisayarınız) veya uzak (GitHub, GitLab gibi) olabilir.
- Commit: Belirli bir zaman noktasında yapılan değişikliklerin kaydıdır. Her commit'in benzersiz bir kimliği vardır.
- Branch (Dal): Projenin ayrı bir kopyası gibi davranır. Ana dal (main/master) dışında başka dallarda çalışarak ana kodu bozmaktan korunursunuz.
- Merge: Farklı dallardaki değişiklikleri birleştirmek işlemidir.
- Pull Request (PR): Başka birinin kodunuzu incelemesini ve daha sonra merge etmesini istemek için kullanılan mekanizmadır.
- Clone: Uzak depoyu bilgisayarınıza indirme işlemidir.
- Push: Yerel bilgisayardaki değişiklikleri uzak depoya göndermedir.
- Pull: Uzak depodaki değişiklikleri bilgisayarınıza çekmedir.
Git'in Avantajları
- Dağıtık Yapı: Her geliştirici tam depo kopyasına sahiptir. İnternet bağlantısı olmasa bile çalışabilirsiniz.
- Sürüm Geçmişi: Proje geçmişinin tamamı kaydedilir. İstediği zaman eski versiyonlara dönebilirsiniz.
- Ekip İşbirliği: Birden fazla geliştirici aynı proje üzerinde paralel olarak çalışabilir.
- Dallanma (Branching): Farklı özellikleri ayrı dallarda geliştirebilir, ana kod'u korursunuz.
- Çatışma Çözümü: Merge sırasında çakışan değişiklikleri görüntüleyip çözebilirsiniz.
- Hız: Tüm işlemler yerel olarak yapıldığı için çok hızlıdır.
- Açık Kaynak: Bedava, güvenli ve topluluk tarafından desteklenmiştir.
Git'in Dezavantajları
- Öğrenme Eğrisi: Başlangıçta komut satırı arayüzü yeni gelenler için kafa karıştırıcı olabilir.
- Karmaşık Merge: Büyük dallarda merge yaparken çatışmalar zorlayıcı olabilir.
- Büyük Dosyalar: Git, metin tabanlı kodlar için optimize edilmiştir. Çok büyük binary dosyalarla performans düşer.
- Veri Yapısı: Deponun yapısını yanlış anlamak hatalara yol açabilir.
Git Nerede Kullanılır?
Git, neredeyse tüm yazılım projelerinde kullanılır:
- Web Uygulamaları: Frontend ve backend kodunun yönetimi
- Mobil Uygulamalar: iOS ve Android geliştirmede
- Oyun Geliştirme: Unity, Unreal Engine gibi motorlarla çalışan projeler
- Veri Bilimi: Python, R scriptleri ve makine öğrenmesi modellerinin versiyonlanması
- Dokümentasyon: Teknik yazılar ve API dokumentasyonu
- Açık Kaynak Projeler: Linux, Python, Node.js gibi dev projelerin yönetimi
- Korporatif Yazılım: Kurumsal uygulamaların geliştirme ve dağıtımı
Git Platformları
Git protokolü sunucusuz olsa da, kod depolamak ve işbirliği yapmak için platformlar kullanılır:
| Platform | Özellik | Ücret |
|---|---|---|
| GitHub | En popüler. Pull request, Actions, Pages ve geniş ekosistem. | Ücretsiz (sınırlı) + Ücretli |
| GitLab | CI/CD özelliği güçlü. Kendi sunucusunda kurulabilir (self-hosted). | Ücretsiz + Ücretli |
| Gitea | Hafif ve basit. Özel sunucularda kullanılabilir. | Ücretsiz (Açık Kaynak) |
| Bitbucket | Atlassian ürünleriyle entegrasyon. JIRA bağlantısı kolay. | Ücretsiz + Ücretli |
Temel Git Komutları
Git'i kullanmak için en sık kullanılan komutlar şunlardır:
git init– Yeni bir Git deposu başlatırgit clone [URL]– Uzak depoyu bilgisayarınıza indirirgit add [dosya]– Dosyaları hazırlama alanına eklergit commit -m "mesaj"– Değişiklikleri depoya kaydedergit push– Yerel değişiklikleri uzak depoya gönderirgit pull– Uzak depodan değişiklikleri çekergit branch– Dal oluşturur veya mevcut dalları listelergit checkout [dal_adı]– Başka bir dala geçergit merge [dal_adı]– Belirtilen dalı mevcut dala birleştirirgit log– Commit geçmişini görüntülergit status– Depo durumunu gösterir
Git Tarihçesi
Git, 2005 yılında Linux çekirdeği geliştiricisi Linus Torvalds tarafından ihtiyaçtan doğdu. O zamanlar Linux çekirdeği projesi BitKeeper adlı ücretli versiyon kontrol sistemi kullanıyordu. Lisans sorunları nedeniyle Torvalds, güçlü, hızlı ve güvenilir bir alternatif geliştirmeye karar verdi.
İlk ayda Git, Linux çekirdeği projesi için yeterli hale geldi. Daha sonra yazılım geliştirme topluluğu tarafından benimsenmiş ve diğer projeler tarafından da kullanılmaya başlanmıştır. 2008 yılında GitHub platformu kurulduğunda Git hızla ana versiyon kontrol sistemi oldu. Günümüzde milyonlarca proje Git'i kullanmaktadır.
"Git'i oluştururken amacım, hızlı, dağıtık ve güvenilir bir sistem yaratmaktı. Bir insanın beyninde olduğu kadar merkezi olmayan bir yapı istedim." – Linus Torvalds