Her yazılımcının bilmesi ve kullanması gereken bazı temel araçlar ve sistemler vardır. Nasıl bir kod yazmak için editöre ihtiyacımız varsa aynı şekilde projelerimizi geliştirirken de Git gibi sistemlere ihtiyaç duyarız. Bu sistemleri kullanmak zorunda olmasak da iyi bir yazılımcının Git sistemini kullanması kaçınılmazdır. Bu yazımızda “Git nedir?“, “Git ne işe yarar?” ve “Neden Git kullanmalıyız?” sorularına cevap vermeye çalışacağım.
Git Nedir?
Git; yazdığımız projelerin büyüklüğü arttıkça takibi zorlaşan değişikliklik kayıtlarına hızlıca ulaşabileceğimiz, yaptığımız değişiklikler üzerine not düşebileceğimiz, bu değişikliklerin kim tarafından ve ne zaman yapıldığına dair verilere ulaşabileceğimiz, birden fazla kişinin aynı dosya üzerinde eş zamanlı çalışmasına ve değişiklik yapmasına izin veren, belirli bir noktaya geri dönebilmemizi sağlayan, dosyalarımızı güvende tutan, yer tasarrufu sağlayan, online veya offline kullanılabilen bir versiyon kontrol sistemidir.

İlk olarak Linux işletim sistemi çekirdeğinin ünlü yaratıcısı Linus Torvalds tarafından projenin geliştirilme aşamasındaki karışıklığı çözmek ve hatalardan kaynaklı veri kaybını önlemek amacıyla 2005 yılında C ve Perl dilleriyle tasarlanıp geliştirilmiştir. Şu an için geliştirilmesi Junio Hamano tarafından üstlenilmiş, GNU Genel Kamu Lisansı ile lisanslanmış özgür bir yazılımdır.
Git Ne İşe Yarar?
Bu sorunun cevabını 3 ana başlık altında toplamak gerekirse, Git; eş zamanlı çalışabilme imkanı, alan tasarrufu ve güvenlik sağlar.
1. Eş Zamanlı Çalışabilme İmkanı

Büyük projelerde onlarca kişiden oluşan yazılım geliştirici ekibinin aynı dosya üzerinde çalıştığını düşünürsek, bir kişi bir dosyaya girdiğinde o dosyaya erişim diğer ekip üyelerine kilitlenir. Bu kişi işlemlerini bitirip değişikliğini yapıncaya kadar diğer ekip üyeleri iş üretemeyecektir. İşte bu nedenle çoğu büyük firma projelerinde Git gibi versiyon kontrol sistemlerini kullanır. Çünkü Git, bir dosya üzerinde birden fazla kişinin çalışmasına olanak sağlar. Bunun yanında bir ekip üyesinin belirli bir kod bloğunda yaptığı değişikliği ana dosya bütününü koruyarak, herhangi bir karışıklık yaşanmasına izin vermez.
Örneğin; Ali ve Ayşe büyük bir projede uygulama geliştiriyorlar. Ali mevcut sürümde bir hata keşfetti ve gelecek sürüm için o bölümü düzeltmesi gerekiyor. Ancak Ayşe’nin de bir yandan gelecek sürüme yeni eklenecek bir özellik üzerinde çalışması gerekiyor.
- Versiyon Kontrol Sistemi Kullanılmayan Durumda: Öncelikle Ali’nin dosyaya girip hatayı düzeltmesi beklenir. Ayrıca Ali hatayı düzelttikten sonra Ayşe’yi bilgilendirmesi ve nerede hangi işlemi yaptığını anlatması gerekebilir. Daha sonra Ayşe Ali’nin değişiklik yaptığı dosyaya girer ve yaptığı yeni geliştirmeyi kod bloğuna ekleyerek dosyayı günceller. Burada Ayşe’nin Ali’yi beklemesi ve bilgilendirme aşamaları projenin yeni sürümünün yayınlanmasını geciktirir. Bu sadece iki kişilik ekipte karşılaşılan bir senaryodur. Günümüzde yüzlerce kişinin aynı projede çalıştığını varsayarsak bu durumun oldukça fazla zaman kaybı yaratacağı aşikardır.
- Versiyon Kontrol Sistemi Kullanılan Durumda (Git): Ali ve Ayşe aynı dosya üzerinde erişim sağlayarak istedikleri gibi değişikliklerini yapabilirler. Ali bir kod satırında değişiklik yaptıktan hemen sonra Ayşe’de başka bir satırda değişiklik yapabilir. Ana dosyanın bütünlüğü korunarak bu işlemler birbirlerini etkilemez ve sadece odaklanılan kısımlarda değişiklik sağlanmış olur. Ayrıca yapılan her değişiklik commit edilerek not düşülür. Eğer Ayşe, Ali’nin dosya üzerinde neler yaptığını merak ederse log kaydına bakarak Ali’nin yaptığı değişikliklerin ne zaman yapıldığını, Ali’nin yaptığı değişikliğe ait bıraktığı notları görebilir. Bu sayede iki ekip üyesi de aynı anda çalışmış olurlar ve dosya üzerinde yapılan tüm değişiklikleri görerek bir nevi birbirleriyle haberleşmiş olurlar
2. Alan Tasarrufu

Yukarıdaki örnekte de görüldüğü gibi versiyon kontrol sistemi olmasaydı her bir değişiklik sonrası proje dosyasını kaydetmek gerekecekti. Daha sonra diğer ekip arkadaşlarımızdan gelen değişiklikleri ana dosyaya dahil etmemiz ve bunların da sürümlerini ayrıca tutmamız gerekecekti. Böylelikle projenin başından beri yapılan küçüklü büyüklü tüm değişiklikleri elimizde ayrı dosyalar şeklinde tutacaktık. Çünkü bazı durumlarda eski sürümdeki bir kod bloğu işimize yarayabileceği gibi sonradan farkettiğimiz yeni sürümlerimizde çıkan hatalar sebebiyle eski dosyalara dönüp bakmamız gerekebilir.
Versiyon kontrol sisteminde ise tek bir dosya üzerinde birden fazla kişinin yaptığı değişiklikleri teker teker kaydetmemize gerek yoktur. Tüm değişiklikler log kayıtlarında tutulduğu için zamanda yolculuk yapar gibi aynı dosya üzerinde bir versiyona geri dönebilirsiniz. Üstelik bu versiyon sizin yaptığınız değişiklik olmak zorunda bile değil!
3. Güvenlik

Git daha tasarlanmadan önce Linus Torvalds tarafından çıkartılacak versiyon kontrol sisteminin bazı temel ilkeleri karşılaması gerekiyordu. Bu temel ilkelerden birisi de; kötü amaçla yazılmış kodlara ve yapılan hatalara karşı sıkı güvenlik önlemleri olmasıydı. Daha önceden varolan birkaç versiyon kontrol sistemi dışında hiçbiri bu ihtiyacı karşılamıyordu. Karşılayanlar ise performans konusunda sınıfta kalıyorlardı.
Git’in günümüzde en popüler ve büyük projelerde tercih edilen versiyon kontrol sistemi olması şüphesiz güvenilirliğini kanıtlamaktadır. Açık kaynak kodlu yapısı denetlenebilirlik sağlarken, yanlışlıkla veya kötü niyetli kişilere karşı değişiklik geçmişinin korunması SHA1 adı verilen güvenli bir algoritma ile güvence altına alınmıştır.
Neden Git Kullanmalıyız?

- Versiyon yönetimi konusunda kolaylık sağlaması
- Projelerde eş zamanlı olarak çalışma imkanı sunması
- Alan ve zaman tasarrufu sağlaması
- Güvenilir ve açık kaynak kodlu olması
- Online ve offline kullanılabilmesi
Sonuç olarak Git nedir sorusuna kısa bir cevap vermek gerekirsek, iyi bir yazılımcının öğrenmesi gereken, birçok avantaj ve kolaylık sunan versiyon kontrol sistemidir. Git’in ne olduğunu öğrendiniz ve bilgisayarınıza nasıl kuracağınızı merak ediyorsanız Git Nasıl Kurulur? blog yazımı, kurulum işlemini zaten yaptınız ve nasıl kullanmanız gerektiğini bilmiyorsanız adım adım anlatımını yaptığım Git Nasıl Kullanılır? blog yazımı okuyabilirsiniz.
Yorum Bırak