Git Versiyon Kontrolü Nedir?

Git versiyon Kontrolü Nedir?

Git versiyon Kontrolü bir ya da daha fazla dosya üzerinde yapılan değişiklikleri kaydeden ve daha sonra belirli bir versiyona geri dönebilmenizi sağlayabilen sisteme verilen addır. Yaygın olarak yazılımcıların kaynak kod dosyalarının versiyon kontrolünü yapmak için kullanılsa da her türlü dokümanın versiyon kontrolü için de kullanılabilir.

Versiyon takip ve kontrolünün on-line platformda web tabanlı olarak ortak bir sistem üzerinden yapılabiliyor olması, aynı zamanda bir porje üzerinde birden fazla kişinin dosyalar üzerinde ortak çalışabilmesi ve her bir geliştiricinin ayrı ayrı yaptığı tüm değişikliklerin versiyon olarak tutulabilmesini sağlamaktadır.

Versiyon takip ve kontrol sistemi sayesinde dosyaların ya da bütün projenin geçmişteki belirli bir versiyonuna erişmenizi, zaman içinde yapılan değişiklikleri karşılaştırmanızı, soruna neden olan şeyde en son kimin değişiklik yaptığını, belirli bir hatayı kimin, ne zaman sisteme dahil ettiğini ve daha başka pek çok şeyi görebilmenizi sağlar. Öte yandan, Versiyon kontrol ve takip sistemi kullanmak, bir hata yaptığınızda ya da bazı dosyaları yanlışlıkla sildiğinizde durumu kolayca telâfi etmenize yardımcı olur. Üstelik, bütün bunlar size kayda değer bir ek yük de getirmez.

Local Versiyon Kontrol Sistemleri
Çoğu insan, dosyaları bir klasöre (akılları başlarındaysa tarih ve zaman bilgisini de içeren bir klasöre) kopyalayarak versiyon kontrolü yapmayı tercih eder. Bu yaklaşım çok yaygındır, çünkü çok kolaydır; ama aynı zamanda hatalara da alabildiğine açıktır. Hangi klasörde olduğunuzu unutup yanlış dosyaya yazabilir ya da istemediğiniz dosyaların üstüne kopyalama yapabilirsiniz.

Çözüm için, yazılımcılar uzun zaman önce, dosyalardaki bütün değişiklikleri versiyon kontrolüne alan basit bir veritabanına sahip olan yerel Versiyon kontrol ve takip sistemi geliştirdiler. (Linus Torwalds liderliğinde)

RCS yaygın kullanılan bir versiyon kontrol ve takip sistemlerinden biridir. MacOSX, Developer Tools’u yüklenirken rcs komutunu kurmaktadır. İki versiyon dosyaları arasındaki farkları özel bir biçimde diske kaydeder. Daha sonra, bu yamaları birbirine ekleyerek, bir dosyanın belirli bir versiyonda ki görünümünü yeniden oluşturur.

On-Line ortak Versiyon Kontrol ve Takip Sistemleri
İnsanların karşılaştığı ikinci büyük sorun, başka sistemlerdeki programcılarla birlikte çalışma ihtiyacından ileri gelir. Bu sorunla başa çıkabilmek için, On-line Versiyon kontrol ve takip sistemi geliştirilmiştir. Bu sistemler, örneğin CVS, Subversion ve Perforce, versiyon kontrolüne alınan bütün dosyaları tutan bir sunucu ve bu sunucudan dosyaları seçerek alan (check out) istemcilerden oluşur. Bu yöntem, yıllarca, versiyon kontrolünde standart yöntem olarak kullanılmıştır.

Bu yöntem özellikle local versiyon kontrol ve takip sistemlerine göre daha avantajlıdır. Örneğin, bir projedeki herkes, diğerlerinin ne yaptığından bir parça haberdardır. Sistem yöneticileri kimin hangi yetkilere sahip olacağını oldukça ayrıntılı biçimde düzenleyebilirler; üstelik bir Versiyon kontrol ve takip sistemlerini yönetmek, her istemcide ayrı ayrı kurulu olan yerel veritabanlarını yönetmeye göre çok daha kolaydır.

Ne var ki, bu yöntemin de ciddi bazı sıkıntıları vardır. En aşikar sıkıntı, merkezi sunucunun arızalanması durumunda ortaya çıkacak kırılma noktası problemidir. Sunucu bir saatliğine çökecek olsa, o bir saat boyunca kullanıcıların çalışmalarını sisteme aktarmaları ya da çalıştıkları şeylerin versiyonlanmış kopyalarını kaydetmeleri mümkün olmayacaktır. Merkezi veritabanının sabit diski bozulacak olsa, yedekleme de olması gerektiği gibi yapılmamışsa, elinizdeki her şeyi —projenin, kullanıcıların bilgisayarlarında kalan yerel bellek kopyaları (snapshot) dışındaki bütün tarihçesini— kaybedersiniz. Yerel SKS’ler de bu sorundan muzdariptir —projenin bütün tarihçesini tek bir yerde tuttuğunuz sürece her şeyi kaybetme riskiniz vardır.

Dağıtık Versiyon Kontrol Sistemleri
Bu noktada Dağıtık Versiyon Kontrol Sistemleri devreye girer. (Git, Mercurial, Bazaar ya da Darcs vb.), istemciler (kullanıcılar) dosyaların yalnızca en son bellek kopyalarını alır ve yazılım havuzunu (repository) bütünüyle (kopyalarlar).

Böylece, sunuculardan biri çökerse, ve o sunucu üzerinden ortak çalışma yürüten sistemler varsa, istemcilerden birinin yazılım havuzu sunucuya geri yüklenerek sistem kurtarılabilir. Her seçme (checkout) işlemi esasında bütün verinin yedeklenmesiyle sonuçlanır.

Bu yapılardan bir çoğu birden çok uzak uç birimde ki yazılım havuzları ile çalışır. Bu sayede aynı proje için aynı anda farklı kişilerle farklı biçimlerde ortak çalışmalar yürütülebilir. Bu, birden çok ortak iş akışı ile birlikte çalışılmasını sağlamış olur.

Git versiyon kontrol ve takibi

Özet olarak;
1. Hem merkezi hem de tüm kullanıcıların kendi havuzlarında tüm sistemin aynı anda güvenle durması,
2. Her paydaş tarafından yapılan her değişikliğin Git sistemleri tarafından ortak versiyon numarası ile numaralandırılması
3. İstenen her versiyona istendiği anda geri dönüşün sağlanabilmesi

Konularını sağlayabilmektedir.

Git online kod geliştirme versiyon takip sistemi. Git.hub, Git.Lab, Bit Bucket

Git Hub, Git Lab, Bit Bucket

Git Linux kerneli ile çalışacak şekilde 2005 yılında Linux’un mucidi Linus Torvalds tarafından geliştirilmiş web bazlı kod geliştirme ve versiyon takip sistemidir.

Git bir özgür yazılım yapısıdır. Bu alt yapıyı kullanarak Git hizmeti veren farklı firmalar tarafından geliştirilmiş alt yapılar bulunmaktadır. Örn: Git.hub, Git.lab, Bit Bucket gibi.

Git Hub, Git Lab, Bit Bucket
Git version control system