Kod projelerinde versiyon kontrolü nasıl sağlanıyor? Git'in temeldeki mantığı ve avantajı nedir? Takımlarla çalışırken versiyonlama ihtiyacı neden doğuyor? İtirazlar/yanlış anlaşılmalar neler olabilir?
Git nedir ve neden kullanılır?
👁️ 7 görüntüleme💬 2 cevap❤️ 0 beğeni
2 Cevap
Git, proje dosyalarında yapılan değişiklikleri kaydedip eski sürümlere geri dönmenizi sağlayan bir sistem. Mesela ben başta böyle bir versiyon kontrol aracının farkında bile değildim, projemde bir şeyi bozunca dosyaları yeniden yapmam gerekti. Git sayesinde sadece `git checkout` komutuyla eski hâle kolayca geri dönebildim. Takımlarla çalışırkense eğer herkes kendi dosyasında değişiklik yapıyorsa, bu değişiklikleri birleştirmek ve çakışmaları çözmek için Git olmazsa olmaz. Bazıları "Sadece ben çalışıyorum, Git'e gerek yok" dese de projesi büyüyünce anlıyorsun asıl ihtiyacın ne olduğunu.
Git, versiyon kontrol sistemleri arasında devrim yaratmış bir araç kanka. Temeldeki mantık, dosyaların tarihçesini takip edip değişiklikleri kaydetmek ve farklı sürümlere bağlı kalabilmek. Mesela bir projeyi geliştirirken "bugfix-1.2" branch'inde çalışıyorsun, master branch'ine karışmadan düzeltme yapabiliyorsun. Bu, özellikle takımlarla çalışırken altın değerinde. Neden mi? Çünkü 10 kişilik bir ekip aynı dosyada aynı anda çalıştığında, en son değişikliklerle hangisinin geçerli olduğunu elle halletmek imkansız. Git, merge'leri otomatikleştiriyor, conflict'leri minimize ediyor.
Avantajlarına gelince, valla distributed architecture sayesinde sunucuya bağımlı değilsin. Yerel branch'ler üzerinde çalışıp commit'leri istediğin gibi pushlayabilirsin. .git dosyası projenin neredeyse bağımsız bir klonunu tuttuğu için offline’ken de rahatça develop yapabilirsin. Hızlı olması da cabası – Linux çekirdeği gibi devasa projelerde bile performanslı çalışıyor.
Takımlarda versiyonlama ihtiyacı dediğin zaman, projenin büyümesiyle birlikte kaynaklanıyor. Örneğin tek başına çalışırken "O anki kodum neydi?" diye uğraşırsın, ama ekip büyüyünce "Ali’nin yaptığı değişiklikten sonra proje çöktü!" gibi sancılar başlıyor. Git bu durumda history’i izlememizi, rollback yapmamızı sağlıyor. Bir de CI/CD pipeline’larını düşün – Git’in hook’ları sayesinde testleri otomatik tetikleyebilirsin.
İtirazlar kısmına gelirsek, en sık karşılaştığım "Git complex" yorumu. Evet, başlangıçta branch modeli, rebase-merge karışıklığı, conflict çözümleri kafa karıştırıyor. Ama bu, Git’in eksikliği değil, belgeleme ve eğitimin yetersizliği. Bir de "svn daha basittir" diyenler var – haklılar, ama distributed yapısıyla Git’in sunduğu esneklik ve offline çalışabilmeyi telafi ediyor. Son olarak, büyük dosyaları yönetirken (binary’ler vs.) LFS eklentisine ihtiyaç duyulduğunu unutmamak lazım, yoksa .git folder’ı büyümeye başlıyor.
Tartışmaya katılmak için giriş yap
Giriş Yap