Sürüm Kontrol Sistemi Nedir ?
Dosyalar üzerinde yapılan tüm değişiklikleri kaydedip versiyonlar oluşturan ve daha sonra istenilen versiyona geri dönebilmeye olanak sağlayan bir sistemdir. Bu sistem neredeyse tüm dosya türlerinde kullanılabilir. GIT,Dağıtık Versiyon Kontrol Sistemidir. Bu da demek oluyor ki dosyalarınız tek bir sunucu üzerinde değil birden çok sunucu üzerinde tutulur.
Neden Versiyon Kontrol Sistemi Kullanmalıyız ?
Birden fazla kişinin çalıştığı projelerde kodların yönetimi oldukca zor ve karmaşık olabilir. Ftp gibi bir yöntemle yaşamak kolay gelebilir ancak oldukça kullanışsız ve risklidir. Yapacağınız her işlem öncesi kodlarınızın bir yedeğini almak istediğinizi düşünün. Bu işlemi Versiyon Kontrol Sistemi olmadan yapmak tam bir işkence haline gelir. Bu sebeple bir topluluk ile veya bireysel olarak kaliteli kod geliştirmek, temiz bir projeye sahip olmak gibi sebeplerden ötürü Versiyon Kontrol Sistemi kullanmamız gerekir.
Dağıtık Versiyon Kontrol Sistemi
Öncelikle Merkezi Versiyon Kontrol Sistemine birkaç cümle ile değinelim. Bu tür bir sistemde tek depo(repository) bulunur ve birden çok kullanıcı vardır.
Dağıtık Versiyon Kontrol Sistemlerinde ise birden fazla yerel depo(local repository) ve birçok kullanıcı vardır. Bunun yanında birde uzak depo(remote repository) vardır.
GIT’in Avantajları ve Yenilikçi Yönleri
- Oldukça hızlıdır. Çünkü birçok işlem lokal de gerçekleşir. Tüm değişiklikler lokal bilgisayarımızda tutulduğundan dolayı uzak sunucuyla hiçbir bağlantı kurmadan hızlı bir şekilde işlemleri gerçekleştirebiliyoruz. (Şekil-2)
- Lokal branching sağlar.
- En büyük farkı Merkezi değil Dağıtık olmasıdır.Bundan dolayı repoya sahip olan her bilgisayarda proje geçmişi bütünüyle saklanır. (Şekil -3)
- Disk alanını verimli kullanır.
- Diğer çoğu versiyon kontrol sistemlerinin aksine Git offline çalışır ve internete ihtiyaç duymadan geliştirme imkanı sunar.
- Yapılan işlemler sırasında verimi kaybedeceğim korkusunu asla yaşamazsınız. Git neredeyse herşeyin kaydını tutar ve anında istediğimiz datalara ulaşmamızı sağlar.
- Branch’lar üzerinde etkili bir denetim ve merge imkanı sunar. Conflict oluşma riski oldukça azdır.
- Satır satır değişiklik yapma imkanı sunar.
- Yeni kavramlara çık olduğunuz takdirde öğrenmesi kolaydır.
- Temel olarak bu maddeleri diğer sürüm kontrol sistemleri ile karşılaştırdığınızda öne çıkan noktalar olduğunu göreceksiniz.
GIT Dezavantajları
Aslında konuya dezavantaj demek pek doğru bir yaklaşım değil. Başlangıçta dezatantaj olarak görülebilecek şeylerin bir süre sonra önemsiz bir hal aldığı ve GIT’in proje geliştirme ortamının vazgeçilmez bir parçası olduğunu göreceksiniz. Peki nedir ilk bakışta dezavantaj olarak sayılabilecek durumlar ?
– Öğrenmesinin zor olduğundan yakınan bir kesim yok değil. Yaklaşım diğer kontrol sistemlerine göre farklı ve karmaşık olabilir. Ancak ilk adımı atana kadar sürüyor bu karmaşa. Bu konuda dökümanlar da günden güne artıyor ve aranılan soruların cevabına kısa sürede ulaşılabiliyor.
– Yine kurulumu konusunda sorunlar yaşayabilirsiniz.
– İşlemlerinizi yaparken karşınıza çıkan hata mesajları ilk bakışta bir anlam ifade etmiyor olabilir.
GIT’in İşleyiş Biçimi
- Dosyalarınız üzerinde değişiklik yapılır.
- Dosyaları hazırlık alanına eklenir.
- Hazırlık alanındaki son halleri alınıp Git klasöründe kalıcı olarak depolanır.
Bu işleyiş biçimini aşağıda görebilirsiniz.(Şekil-4)
Temel Git Komutları
Öncelikle GIT’i çeşitli GUI’lar aracılığı ile komut yazmadan kullanabileceğinizi belirteyim. Bunun GUI’ı şuradan edinebilirsiniz : http://git-scm.com/downloads/guis . Ancak önerim yaptığınız şeyin ne olduğunu bilmeniz ve GIT’i terminalde komut satırlarıyla öğrenmeniz. Bunun için temel olarak detaya inmeden bir kaç komut listeleyeceğim:
– git status : Dosyaların o anki durumunu gösterir. Yapılan tüm değişiklikleri gösterir.
– git add : Dosyaları commit e hazırlamanızı sağlar.
– git commit : Yapılan değişiklikleri bir versiyon olarak kaydeder.
– git push : Dosyaları uzak repo’ya göndermenizi sağlar.
– git pull : Uzak repo’daki tüm güncellemeleri lokal repo’nuza çeker.
– git rm : Dosya silmenizi sağlar.
– git checkout : Kullanıma bağlı olarak branch’lar arasında geçiş yapmanızı sağlar veya izlemeye alınmamış dosyaları eski haline göndürmenizi sağlar.
– git branch : Varolan branch’ları listeler. Yeni branch oluşturmanızı sağlar.
– git merge : Branch’ları birleştirmeyi sağlar.
– git reset : İstenilen versiyona dönmeyi sağlar.
– git log : Geçmiş commitleri gösterir.
– git cherry-pick : Bir branch’daki commit i başka bir branch’a kopyalamanızı sağlar.
Daha pek çok komut’un olduğu bir sistemdir GIT. Komutların fazlalığı sizi korkutmasın, kısa sürede alışıyorsunuz.
GIT Kurulumu
Linux Kurulumu için :
apt-get install git
komutu ile kurulumu kolayca yapabilirsiniz.
Mac Kurulumu için :
http://code.google.com/p/git-osx-installer adresinden installer ı indirip kurabilirsiniz.
Config Ayarları
Basit bir şekilde konsol yardımı ile email ve name bilgilerini set ediyoruz.
git config –global user.name <isim>
git config –global user.email <email>
–global komutunu kullandığınızda bu işlemi bir kez yapmanız yeterlidir. Farklı projelerde bu bilgileri değiştirmek isterseniz proje dizininde –global özelliğini kullanmadan işlemi yapmanız yeterli.
Ayarlarınız gözden geçirmek isterseniz git config –list komutunu çalıştırın.
Windows Kurulumu için :
http://msysgit.github.io/ adresinden dosyayı indirip kurabilirsiniz.
Bazı Popüler GIT Servisleri
– https://github.com/ Free plan ‘da sınırsız sayıda public repo oluşturabilirsiniz. Ancak private repo için ücret ödemeniz gerekiyor
– https://bitbucket.org/ Favorilerimden bitbucket’da ise sınırsız olarak private ve public repo oluşturabiliyorsunuz.
( Alıntı )