koddla

Yazılımcıları bilgi ile güçlendirir.

Git’e Giriş: Yeni Başlayanlar İçin Versiyon Kontrol Rehberi

Henüz Git’i kullanmıyorsanız muhtemelen “sürüm kontrolü” terimini çok duymuşsunuzdur. Ancak sürüm kontrolü tam olarak nedir ve neden bu kadar önemli? Bu giriş yazısında, dünya çapında milyonlarca geliştirici tarafından kullanılan popüler bir sürüm kontrol sistemi olan Git’i öğreneceğiz. Git’i kullanmaya başlamak için bilmeniz gereken temel terminoloji ve kavramları ele alacak ve programlama projelerinizde daha verimli ve işbirliği içinde çalışmanıza nasıl yardımcı olabileceğini göstereceğiz.

Versiyon Kontrolü Nedir?

Sürüm kontrolü, zaman içinde dosyalarda yapılan değişiklikleri izleme ve yönetme uygulamasıdır. Bir dosya geliştikçe farklı sürümlerini takip etmenin ve başkalarının değişiklerinin üzerine yazmadan aynı dosya üzerinde işbirliği yapmanın bir yoludur.

Sürüm kontrolünü kodunuz için bir zaman makinesi gibi düşünün. Kodunuzun geçmişte belirli bir noktada nasıl göründüğünü görmek için zamanda geriye gitmenize ve önceki çalışmanızı kaybetme korkusu olmadan kodunuzda değişiklikler yapmanıza olanak tanır.

Geliştiricilerden oluşan bir ekiple bir programlama projesi üzerinde çalıştığınızı varsayalım. Hepiniz kod tabanının farklı bölümleri üzerinde çalışmak üzere görevlendirilmişsiniz. Hepiniz aynı dosyalar üzerinde değişiklikler yapıyorsunuz. Sürüm kontrolü olmadan, kimin hangi değişiklikleri yaptığını, bu değişikliklerin ne zaman yapıldığını ve bu değişiklikler yapılmadan önce kodun neye benzediğini takip etmek zor olacaktır.

Akılda kalıcı olması için diyelim ki üç kişilik bir ekibiniz olsun, ekip üyeleri; Ahmet, Mehmet ve Ayşe. Bu ekip bir müşteri için yeni bir web sitesi üzerinde çalışsınlar ve her birinin belirli bir rolü olsun. Ahmet tasarımcı, Mehmet sunucu tarafı geliştiricisi ve Ayşe de istemci tarafı işlevselliği üzerinde çalışıyor. Bu üç kişi farklı işlerle uğraşıyor olsalar da ara sıra birbirlerinin kodunu değiştirsinler. (Bu örneğe geri döneceğiz)

Birisi yanlışlıkla önemli bir dosyayı siler veya bir hata yaparsa, o zamandan beri yapılan diğer tüm çalışmaları kaybetmeden bu değişiklikleri geri almak zor olabilir. Bu durum, ilgili herkes için zaman kaybına ve hayal kırıklığına yol açabilir.

Sürüm kontrolü ile her geliştirici kod üzerinde bağımsız olarak değişiklik yapabilir ve bu değişiklikler merkezi bir depoda izlenebilir ve yönetilebilir. Birisi bir hata yaparsa veya bir hata ortaya çıkarsa, o zamandan beri yapılan diğer değişikliklerin hiçbirini kaybetmeden kodun önceki bir sürümüne geri dönmek böylece kolay olacaktır.

Bu, ister bir geliştirici ekibiyle çalışıyor olun ister sadece kendi kodunuz üzerinde çalışıyor olun, programlama projeleri üzerinde işbirliği yapmayı çok daha kolay hale getirir. Ayrıca, kodunuzun her zaman çalışır durumda olmasını ve bir şeyler ters giderse kolayca önceki bir sürüme geri dönebilmenizi sağlamaya yardımcı olur.

Peki Git Nedir ve Neden Önemli?

Git, 2005 yılında Linus Torvalds tarafından oluşturulan dağıtımlı bir sürüm kontrol sistemidir. Şu anda dünyada en yaygın kullanılan sürüm kontrol sistemidir ve bunun. Git, aşağıdakiler de dahil olmak üzere bir dizi avantaj sunar:

  • Hız: Git hızlı ve verimli olacak şekilde tasarlanmıştır, değişiklikleri işlemenize ve dallar arasında hızlı bir şekilde geçiş yapmanıza olanak tanır.
  • Dallanma ve Birleştirme: Git ile, belirli özellikler veya hata düzeltmeleri üzerinde çalışmak için kolayca yeni dallar (aşağıda dal ne demek tartışacağız) oluşturabilir ve işiniz bittiğinde bunları ana kod tabanına geri birleştirebilirsiniz. Bu, çakışan değişiklikler konusunda endişelenmeden aynı anda birden fazla özellik üzerinde çalışmayı kolaylaştırır.
  • Dağıtılmış: Subversion gibi merkezi sürüm kontrol sistemlerinin aksine Git dağıtımlıdır, yani her geliştirici kod tabanının kendi kopyasına sahiptir. Bu, çevrimdışı çalışmayı veya başka konumlardaki geliştiricilerle işbirliği yapmayı kolaylaştırır.
  • Açık Kaynak: Git açık kaynak kodludur, yani herkes geliştirilmesine katkıda bulunabilir ve ücretsiz olarak kullanabilir.

Temel Git Terminolojisi

Şimdi terminolojiye biraz bakalım. Git, etkin bir şekilde kullanmak için anlamanız gereken kendi terminolojisine sahiptir. En önemli terimlerden bazılarını inceleyelim:

Depo

Depo veya repository veya kısaca “repo”, bir projeyi oluşturan dosya ve dizinlerden oluşan bir koleksiyondur. Bunu projenizin parçası olan tüm dosya ve klasörleri içeren bir klasör olarak düşünün. Depo, kodunuzun tüm sürümlerinin, üzerinde yapılan değişikliklerin geçmişiyle birlikte depolandığı yerdir.

Ahmet, Mehmet ve Ayşe’nin olduğu ekibimizde, depo HTML, CSS ve JavaScript dosyalarının yanı sıra sitemizi oluşturan görüntüleri ve diğer varlıkları içerebilir.

Commit

Bir commit, kodunuzun belirli bir zamandaki anlık görüntüsüdür. Kodunuzda değişiklik yaptığınızda, bu değişiklikleri depoya “işlemeniz” gerekir. Bu, kodunuzun gerektiğinde daha sonra geri dönebileceğiniz yeni bir sürümünü oluşturur.

Örneğin, web sitenizi daha duyarlı hale getirmek için CSS’de bazı değişiklikler yaptığınızı varsayalım. Bu değişiklikleri deponun yerel kopyasında yaparsınız, ardından ekibinizdeki diğer herkesin görebilmesi için bu değişiklikleri uzak depoya “işlersiniz”.

Dal – Branch

Dal, aynı depo içinde ayrı bir geliştirme kopyasıdır. Kodun ana sürümünü etkilemeden yeni bir özellik üzerinde çalışmanıza veya değişiklikleri denemenize olanak tanır. Bunu, orijinal kodu etkilemeden değişiklik yapabileceğiniz deponun ayrı bir kopyası olarak düşünün.

Yeni bir tasarım düzeni denemek veya yeni işlevler eklemek için yeni bir dal oluşturabilirsiniz. Yaptığınız değişikliklerden memnun olduğunuzda, dalınızı kodun ana sürümüyle birleştirebilirsiniz.

Birleştirme – Merge

Birleştirme, bir daldaki değişiklikleri başka bir dalda birleştirme işlemidir. Bir dalı birleştirdiğinizde, esasen o dalda yapılan değişiklikleri alır ve bunları kodun ana sürümüne dahil edersiniz.

Web siteniz için ayrı bir dalda yeni bir özellik üzerinde çalıştığınızı varsayalım. Değişikliklerinizi test ettikten ve her şeyin beklendiği gibi çalıştığından emin olduktan sonra, değişikliklerinizden herkesin yararlanabilmesi için dalınızı kodun ana sürümüyle birleştirebilirsiniz.

Pull Talebi

Pull isteği, değişiklikleri bir daldan diğerine birleştirme isteğidir. Yapılan değişiklikleri gözden geçirmenize ve kodun ana sürümüyle birleştirilmeden önce herhangi bir hata veya başka sorun yaratmadıklarından emin olmanıza olanak tanır.

Web siteniz için yeni bir özellik üzerinde çalışıyorsanız, bu değişiklikleri kodun ana sürümüyle birleştirmek için bir pull isteği oluşturabilirsiniz. Ekip üyeleriniz değişikliklerinizi inceleyebilir ve değişiklikler birleştirilmeden önce geri bildirimde bulunabilir.

Bu temel Git terminolojilerini anlamak, Git’i etkili bir şekilde kullanmak için çok önemlidir. Dalları ve commit’i kullanarak, kodun ana sürümünü etkilemeden aynı anda birden fazla özellik veya deneme üzerinde çalışabilirsiniz. Birleştirme ve pull istekleri, diğer geliştiricilerden gelen değişiklikleri dahil etmenize ve kodun ana sürümüyle birleştirilmeden önce değişiklikleri gözden geçirmenize olanak tanır. Bu, kodunuzun her zaman çalışır durumda olmasını ve ekibinizdeki herkesin aynı sayfada olmasını sağlamaya yardımcı olur.

Git Kullanımı: Adım Adım Kılavuz

Örneğimize geri dönelim. Ahmet, Mehmet ve Ayşe’nin olduğu ekibimiz bir web sayfası üzerinde çalışıyordu. Bu ekibin izleyeceği adımlara bakalım.

  1. Depo oluşturma: İlk olarak, kodlarını saklamak için yeni bir Git deposu oluştururlar. Ahmet, GitHub’da depoyu kurar ve Mehmet ve Ayşe’yi projeye katılmaya davet eder. Bu şekilde Mehmet ve Ayşe de depoyu kendi yerel makinelerine klonlarlar.
  2. Yeni bir dal oluşturma: Ahmet, depoda “tasarım” adında yeni bir dal oluşturarak işe başlar. Web sitesinin tasarımında yapacağı tüm değişiklikleri burada gerçekleştirecek. Yeni dalı kontrol eder ve çalışmaya başlar.
  3. Değişikliklerin işlenmesi: Ahmet tasarım üzerinde çalışırken, “tasarım” dalına düzenli olarak commit yapar. Her commit, kodun belirli bir zamandaki anlık görüntüsünü temsil eder. Her commit’te hangi değişiklikleri yaptığını açıklayan kısa bir mesaj yazar.
  4. Değişiklikleri gözden geçirme ve birleştirme: Ahmet değişikliklerini tamamladığında GitHub’da bir pull isteği oluşturur. Mehmet ve Ayşe değişiklikleri gözden geçirir ve yorumlarda bulunarak bazı düzeltmeler yapılmasını ister. Ahmet istenen değişiklikleri yapar ve bunları “tasarım” dalına işler. Herkes değişikliklerden memnun kaldığında, Mehmet “tasarım” dalını web sitesinin mevcut durumunu temsil eden “master” dalıyla birleştirir.
  5. Sunucu tarafı geliştirme için yeni bir dal oluşturma: Mehmet şimdi sunucu tarafı kodu üzerinde çalışmak için “sunucu” adında yeni bir dal oluşturur. Yeni dalı kontrol eder ve değişiklikleri üzerinde çalışmaya başlar.
  6. Değişikliklerin işlenmesi ve gözden geçirilmesi: Mehmet çalışırken “sunucu” dalına düzenli olarak commit yapar. Bir pull isteği oluşturur ve Ahmet ve Ayşe değişiklikleri gözden geçirir, önerilerde bulunur ve gerektiğinde ince ayar yapılmasını ister. Mehmet istenen değişiklikleri yapar ve bunları “sunucu” dalına işler.
  7. Değişiklikleri birleştirme: Herkes değişikliklerden memnun kaldığında, Mehmet “sunucu” dalını artık Ahmet’in tasarım değişikliklerini ve Ayşe’nin sunucu tarafı değişikliklerini içeren “ana” dalla birleştirir.
  8. İstemci tarafı geliştirme için yeni bir dal oluşturma: Ayşe şimdi istemci tarafı işlevselliği üzerinde çalışmak için “istemci” adında yeni bir dal oluşturur. Yeni dalı kontrol eder ve değişiklikleri üzerinde çalışmaya başlar.
  9. Değişikliklerin işlenmesi ve gözden geçirilmesi ve değişiklikleri birleştirme: Ayşe de benzer şekilde değişiklikleri commit eder ve sonrasında birleştirir.
  10. Sürekli geliştirme: Ekip, üzerinde çalıştıkları her yeni özellik veya hata düzeltmesi için yeni dallar oluşturarak web sitesi üzerinde çalışmaya devam eder.

Şimdi bu adımlar nasıl gerçekleşiyor bunu inceleyelim;

Adım 1: Depo Oluşturma

Git’i kullanmanın ilk adımı bir depo oluşturmaktır. Bu, projenizi oluşturan tüm dosyaların yanı sıra değişiklik yaptıkça bu dosyaların tüm sürümlerini saklayacağınız yerdir.

Yeni bir depo oluşturmak için yapmanız gerekenler:

  1. Deponuzu oluşturmak istediğiniz dizine gidin
  2. Komut satırını veya terminal penceresini açın
  3. Bu dizinde yeni bir Git deposu başlatmak için git init yazın

Örneğin, musteri-website adında yeni bir dizin oluşturabilir ve terminalinizde bu dizine gidebilirsiniz. Daha sonra bu dizinde yeni bir Git deposu oluşturmak için git init yazarsınız.

Adım 2: Dal Oluşturma

Bir depo kurduktan sonra, bir dal oluşturmak isteyeceksiniz. Dal, kodun ana sürümünü etkilemeden yeni özellikler üzerinde çalışmanıza veya değişiklikler yapmanıza olanak tanıyan, deponuzdaki ayrı bir geliştirme kopyasıydı.

Yeni bir dal oluşturmak için yapmanız gerekenler:

  1. Yeni bir dal oluşturmak için git branch branch-adi yazın
  2. Bu yeni dala geçmek için git checkout branch-adi yazın

Web siteniz için yeni bir tasarım düzeni denemek istediğinizde git branch design-yeni yazarak design-yeni adında yeni bir dal oluşturabilirsiniz. Daha sonra git checkout design-yeni yazarak bu yeni dala geçebilirsiniz.

Adım 3: Değişiklikler Yapın ve İşleyin

Yeni dalınıza geçtikten sonra kodunuzda değişiklikler yapmaya başlayabilirsiniz. Değişiklik yaptıkça, bunları deponuza “commit” etmeniz gerekir. Bu, kodunuzun gerektiğinde daha sonra geri dönebileceğiniz yeni bir sürümünü oluşturur.

Değişiklik yapmak ve bunları işlemek için yapmanız gerekenler:

  1. Kodunuzda değişiklikler yapın
  2. Değişikliklerinizi commite hazirlamak için git add . yazın
  3. Değişikliklerinizi, neyi değiştirdiğinizi açıklayan bir mesajla birlikte işlemek için git commit -m "commit mesaj" yazın

Örneğin, web sitenizdeki metnin rengini değiştirmek istediğinizi varsayalım. Uygun dosyayı açar, değişikliği yapar, ardından değişikliklerinizi commite hazirlamak için git add . yazarsınız. Son olarak, git commit -m "yazi rengini degistirdim" yazarak değişikliklerinizi neyi değiştirdiğinizi açıklayan bir mesajla birlikte işlersiniz.

Adım 4: Değişikliklerinizi Birleştirin

Değişiklikler yaptıktan ve bunları dalınıza işledikten sonra, değişikliklerinizi kodun ana sürümüyle birleştirmek isteyeceksiniz. Bu, ekibinizdeki diğer herkesin değişikliklerinizden yararlanmasını sağlar.

Değişikliklerinizi birleştirmek için yapmanız gerekenler:

  1. Ana dala geri dönmek için git checkout main yazın
  2. Kendi dalınızdaki değişiklikleri ana dalla birleştirmek için git merge dal-adi yazın

Örneğin, design-yeni dalınızda yaptığınız değişikliklerden memnun olduğunuzu ve bunları web sitenizin ana sürümüyle birleştirmek istediğinizi varsayalım. git checkout main yazarak ana dala geri dönersiniz. Ardından git merge design-yeni yazarak design-yeni dalınızdaki değişikliklerinizi ana dalla birleştirirsiniz.

Adım 5: Push

Son olarak, değişikliklerinizi kodun ana sürümüyle birleştirdikten sonra, bu değişiklikleri GitHub veya GitLab gibi uzak bir depoya “göndermek” isteyeceksiniz. Bunu yapmak için öncelikle aşağıdaki komutla uzak depoyu eklemeniz gerekir:

git remote add <remote-name> <remote-url>

<remote-name> yerine uzak deponun adını (örneğin “origin”) ve <remote-url> yerine de uzak deponun URL’sini yazın.

Daha sonra aşağıdaki komutu kullanarak değişikliklerinizi uzak depoya gönderebilirsiniz:

git push <remote-name> <branch-name>

Adım 6: Pull isteği oluşturma:

Değişikliklerinizi ana kod tabanıyla birleştirmeye hazır olduğunuzda bir pull isteği oluşturmanız gerekir. Bu, değişikliklerinizi kendi dalınızdan ana veya ana dala birleştirme isteğidir. Ana kod tabanınızın GitHub üzerinde olduğunu varsayalım. Pull isteği oluşturmak için aşağıdaki adımları izleyin:

  • GitHub’daki Deponuza gidin
  • “Pull istekleri” sekmesine tıklayın
  • “Yeni pull isteği” düğmesine tıklayın
  • Birleştirmek istediğiniz dalı seçin. Örneğin Master veya main
  • Değişiklikleri gözden geçirin ve her şeyin iyi göründüğünden emin olun
  • “Pull isteği oluştur” düğmesine tıklayın

Adım 7: Değişiklikleri gözden geçirme ve birleştirme:

Bir pull isteği oluşturduktan sonra, diğer ekip üyeleri değişikliklerinizi inceleyebilir ve geri bildirim sağlayabilir. Dalınızda değişiklikler yapabilir ve gerektiğinde yeni commitler gönderebilirsiniz. Herkes değişikliklerden memnun olduğunda, birleştirme izinlerine sahip bir ekip üyesi pull isteğini ana kod tabanına birleştirebilir.

Adım 8: Temizlik

Değişiklikleriniz birleştirildikten sonra, deponuzu temiz tutmak için dalınızı silebilirsiniz. Yerel dalınızı silmek için aşağıdaki komutu kullanabilirsiniz:

git branch -d branch-adi

Ve uzak dalinizi silmek için aşağıdaki komutu kullanabilirsiniz:

git push origin --delete branch-adi

Bu adımları izleyerek, kod değişikliklerinizi yönetmek ve ekip üyelerinizle işbirliği yapmak için versiyon kontrolü etkili bir şekilde kullanabilirsiniz. Hangi dallar üzerinde çalıştığınız konusunda ekibinizle iletişim kurmayı ve değişiklikleri birleştirmeden önce birbirinizin değişikliklerini gözden geçirmeyi unutmayın.

Sonuç

Bu makalede, dünyanın dört bir yanındaki geliştiriciler tarafından kullanılan güçlü bir sürüm kontrol sistemi olan Git’i tanıttık. Bilmeniz gereken temel terminoloji ve kavramları ele aldık ve kodunuzdaki değişiklikleri yönetmek ve başkalarıyla işbirliği yapmak için Git’i nasıl kullanacağınızı gösterdik. Bu bilgilerle, programlama projelerinizde daha verimli çalışma yolunda ilerleyeceksiniz.

Bu makale Git’e giriş için gereken bilgileri veriyor olsa da, denemeden öğrenmek biraz zor. Bu bilgileri hazmetmek için bir deneme projesi oluşturmayı düşünebilirsiniz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Back to top