Git Versiyon Kontrol Sistemine Giriş

Git Nedir?

Daha önceki yazılarımızda versiyon kontrol sistemlerinin yazılım geliştirme için önemini belirtmiştik. Bu yazıda diğer versiyon kontrol sistemlerinden farklı ve  oldukça esnek bir yapıya sahip olan Git versiyon kontrol sistemini genel olarak anlatacağım.

Git versiyon kontrol sistemi, Linus Torvalds tarafından BitKeeper yerine geliştirilmeye başlamış bir versiyon kontrol sistemidir.  Linux’un geliştirilmesinde kullanılan BitKeeper’ın açık kaynak lisansı kaldırılınca Git sistemi geliştirilmeye başlamıştır. Git geliştirilirken ön planda tutulan tasarım kriterleri dağıtık olması, tutarlı olması, büyük projelerde verimli bir şekilde çalışması ve doğrusal olmayan çalışma şekillerini desteklemesi olarak sayılabilir. Git sisteminin bazı özelliklerinin şöyle listeleyebiliriz:

  • Dağıtık (Distributed)  Sistem: Git işletim sisteminde, her kullanıcının lokal çalışma alanı bir sunucu görevi görür. Her kullanıcı kendi lokalinde versiyonlama ve geri yükleme yapabilir, SVN’de olduğu gibi başka sunuculara ihtiyacı yoktur. Dilediğinde lokalindeki değişiklikleri merkezi bir sunucuya atarak herkesle paylaşabilir. Birçok işlem lokalde gerçekleştiği için yapılan değişiklikleri listelemek, yenilerini commit etmek, geri almak, yeni bir branch açmak ve ya branch’ları birleştirmek işlemleri hızlıca gerçekleşir. Yani örneğin internet olmayan bir yerde tüm geliştirmelere devam edip, daha sonra uzak bir sunucuya değişiklikleri atabilirsiniz.
  • Performans: Birçok işlem lokalde yapıldığından, diğer versyion kontrol sistemlerine göre Git daha hızlı sonuç vermektedir. Ayrıca branch işlemlerinde de diğer sistemler gibi branch dosyalarını ek bir klasörde tutmayarak bir çeşit pointer mantığı kullanmaktadır. Böylece çok sayıda branch içeren büyük projelerde de iyi sonuç vermektedir.
  • Tutarlılık (Integrity) : Versiyon kontrol sistemlerinde versiyonlar arası geçişlerde bilginin bozulmaması ve tutarlılık çok önemlidir. Git, sisteme eklenen her bir dosyanın SHA-1 algoritmasıyla hash bilgisini oluşturarak bu bilgiyi kaydetmektedir. Bu nedenle versiyonlar arası geçişte bilgi kaybı olması söz konusu değildir.
  • Mevcut Protokollerle Entegrasyon : Git  sunucuları HTTP üzerinden hizmet verebilirken, SSH ve ya Git protokolü üzerinden de dosyalarınızı sunabilirsiniz.

Git Sisteminin İşleyişi

Git sistemini ve komutlarını doğru kullanmak için işleyişini net olarak anlamak gerekiyor. Aşağıda anlatılanlar ve şemayı anlamak oldukça kritik, bunları anladıktan sonra Git kullanmak çok kolay diyebilirim 🙂

Git sisteminde dosyalarımızın bulunabileceği 3 durum bulunuyor:  modified(düzenlenmiş),  staged(gönderilecek), ve committed(gönderildi). Git’e eklemediğimiz fakat proje klasöründe yer alan dosyalar ise untracked (takip edilmiyor) durumunda oluyor.

Dosyaları Git sistemine eklersek ve ya zaten eklenmiş olan dosyalarda değişiklik yaparsak bu dosyalar modified durumuna geçiyor. Modified durumundaki dosyaları bir sonraki commit işleminde gönderilmek üzere işaretlersek durumu staged olarak değişiyor . Daha sonra commit işlemi gerçekleştirdiğimizde sadece staged durumdaki dosyalar commit işlemine dahil ediliyor ve commit ile gönderiliyor, böylece committed  durumuna sahip oluyorlar.

 

 

Yukarıdaki şemada da genel kullanım sırasına göre klasörler arası geçişi görebilirsiniz. Önce bir Git klasöründen (git directory) ilgili dosyaları lokal çalışma alanımıza (working directory) alıyoruz (checkout). Daha sonra projede değişiklikler yapıp bu değişiklikleri gönderilecek olarak işaretliyoruz, ilgili dosyalar gönderilecekler alanına atılıyor (staging area). En sonunda da bu değişiklikleri gönderiyoruz (commit) ve ilgili Git klasörüne bunlar gönderiliyor. Burada Git klasörü SVN’deki gibi uzak bir sunucuda yer almıyor, her kullanıcının lokal çalışma alanı bir sunucu görevi gördüğü için, bu işlemler lokalde yapılıyor.

Eğer durum geçişlerini tam olarak anladıysanız bundan sonraki yazılarda anlatacağım komutları anlamakta zorluk çekmeyeceksiniz demektir 🙂 Git’e hoşgeldiniz diyelim o zaman 🙂

Kaynaklar

http://progit.org/book/

http://en.wikipedia.org/wiki/Git_(software)

6 Comments

    Git Versiyon Kontrol Sistemine Giris « Lé Blog

    […] farklı ve oldukça esnek bir yapıya sahip olan Git versiyon k… Devamı için : Git Versiyon Kontrol Sistemine Giris Share :FacebookTwitterStumbleUponLinkedInLike this:LikeBe the first to like this […]

    Git Versiyon Kontrol Sistemi Genel Komutlari « Dubluve.net

    […] Bize Yazın « Git Versiyon Kontrol Sistemine Giriş […]

    Git Versiyon Kontrol Sistemine Giris « Musa Usta'nın Yeri

    […] farklı ve oldukça esnek bir yapıya sahip olan Git versiyon k… Devamı için : Git Versiyon Kontrol Sistemine Giris Share this:TwitterFacebookLike this:BeğenBe the first to like this post.   Leave a […]

    Git Versiyon Kontrol Sistemine Giris « kodluyorum

    […] farklı ve oldukça esnek bir yapıya sahip olan Git versiyon k… Devamı için : Git Versiyon Kontrol Sistemine Giris Share this:TwitterFacebookLike this:BeğenBe the first to like this […]

    Git Versiyon Kontrol Sistemine Giris | Gökhan Tunçkale | Blog

    […] farklı ve oldukça esnek bir yapıya sahip olan Git versiyon k… Devamı için : Git Versiyon Kontrol Sistemine Giris ShareFacebookTwitterStumbleUponMoreTumblrRedditLinkedInDiggEmailPrintLike this:BeğenBe the first […]

    Symfony2 – Ek Kutuphaneleri Yonetmek « Dubluve.net

    […] kütüphanenin git tarafından oluşturulan ve o commit’e ait commit-hash bilgisini (burada bahsetmiştim) […]

Bir Cevap Yazın