Git Kullanımında Geliştirme Yapılan Dalların Doğru Güncellenmesi ve Önemi

Share Button

Kalabalık geliştirici gruplarının çalıştığı projelerde sürüm paketlerinin düzgün oluşturulabilmesi için çıkılan dalların doğru güncellenmesi oldukca önemlidir. Genellikle böyle yapılarda geliştiricilerin bu konuyla ilgili en çok yaşadığı ikilem, pull ve rebase komutlarının kullanımıdır. Cevabı aslında çok net olan bu ikilemi ortadan kaldırmak için öneclikle pull ve rebase komutlarını yakından tanıyalım.

1. Git Pull ve Rebase Komutlarını Tanıyalım:

pull ve rebase komutları, genel olarak uzak depoda gerçekleşen değişikliklerin yerel depodaki değişikliklerle geçerli yerel dalda farklı metodolojilerle birleştirilmesi için kullanılırlar.

1.1. Git Pull:

Git pull, uzak depoda gerçekleşen değişiklikleri yerel depoda ilgili dalda birleştirmek için kullanılır. Birleştirme işlemi, commit sırasına göre gerçekleştirileceğinden birleştirme sonrasında sürüm günlüğünde iki commit arasında uzak depodan gelen farklı geliştiricilerin yaptığı commitleri görmeniz olasıdır.

Pull işleminden önce sürüm günlüğü

commit e572de2efb567fc71c4b1514c7187f5d07eac6c2
Author: Ali Veli <ali.veli@gmail.com>
Date:   Wed Jul 17 02:13:50 2013 -0430

    ISSUE-1 - Soap adapter'ı için son committe eksik kalan fonksiyonlar eklendi.

    Change-Id: Iee83313671916bfb1e13fbc8f5b71408be202749

commit 89cc1c898ff01ff945c3423d22ed143dda52e475
Author: Ali Veli <ali.veli@gmail.com>
Date:   Tue Jul 16 09:38:35 2013 -0430

    ISSUE-1 - required function sendRequest implemented for Soap Adapter

    Change-Id: Id4f7ffdaef1f905b029d4818e1e07d1d5bc60bf1

Pull işleminden sonra sürüm günlüğü

commit e572de2efb567fc71c4b1514c7187f5d07eac6c2
Author: Ali Veli <ali.veli@gmail.com>
Date:   Wed Jul 17 02:13:50 2013 -0430

    ISSUE-1 - Soap adapter'ı için son committe eksik kalan fonksiyonlar eklendi.

    Change-Id: Iee83313671916bfb1e13fbc8f5b71408be202749

commit 70c6059f32b5569ef32875d38da564d7a6d128ed
Author: Ibrahim Gunduz <ibrahim.gunduz@markafoni.com>
Date:   Tue Jul 16 16:54:20 2013 +0300

    ISSUE-2 - Event listener communication kutuphanesiyle iliskilendirilmesi-devam ediyor.

commit 87f166fa0460db40a240200dd093196f2195bb88
Author: Ibrahim Gunduz <ibrahim.gunduz@markafoni.com>
Date:   Tue Jul 16 13:13:26 2013 +0300

    ISSUE-2 - EventManager soyutlamasiyle ilgili gelistirme yapildi.

commit 89cc1c898ff01ff945c3423d22ed143dda52e475
Author: Ali Veli <ali.veli@gmail.com>
Date:   Tue Jul 16 09:38:35 2013 -0430

    ISSUE-1 - required function sendRequest implemented for Soap Adapter

    Change-Id: Id4f7ffdaef1f905b029d4818e1e07d1d5bc60bf1

Git pull, aynı zamanda git fetch + git merge komutlarının birlikte kullanımıyla gerçekleşen işlem için bir kısayol komutudur.

git fetch+git merge ile uzakdaki değişikliklerin alınması :

$ git fetch origin
...
$ git merge origin/master

git pull ile uzakdaki değişikliklerin alınması :

$ git pull origin master

1.2. Git Rebase:

Git rebase komutu, uzak depodaki daldan ayrıldığınız noktadan itibaren yaptığınız tüm değişiklikleri daha sonra kullanmak üzere kenara alır, uzak depodaki değişiklikleri yerel depodaki dalda birleştirir ve sizin yaptığınız değişiklikleri dalın en üstüne taşır.

Biraz önce git pull komutunda kullandığımız örneği git rebase ile gerçekleştirelim.

Yerel depomuzdaki dalda gerçekleştirdiğimiz değişiklikler :

commit e572de2efb567fc71c4b1514c7187f5d07eac6c2
Author: Ali Veli <ali.veli@gmail.com>
Date:   Wed Jul 17 02:13:50 2013 -0430

    ISSUE-1 - Soap adapter'ı için son committe eksik kalan fonksiyonlar eklendi.

    Change-Id: Iee83313671916bfb1e13fbc8f5b71408be202749

commit 89cc1c898ff01ff945c3423d22ed143dda52e475
Author: Ali Veli <ali.veli@gmail.com>
Date:   Tue Jul 16 09:38:35 2013 -0430

    ISSUE-1 - required function sendRequest implemented for Soap Adapter

    Change-Id: Id4f7ffdaef1f905b029d4818e1e07d1d5bc60bf1

Rebase işleminden sonra gelen değişikliklerle yerel deponun son durumu:

commit e572de2efb567fc71c4b1514c7187f5d07eac6c2
Author: Ali Veli <ali.veli@gmail.com>
Date:   Wed Jul 17 02:13:50 2013 -0430

    ISSUE-1 - Soap adapter'ı için son committe eksik kalan fonksiyonlar eklendi.

    Change-Id: Iee83313671916bfb1e13fbc8f5b71408be202749

commit 89cc1c898ff01ff945c3423d22ed143dda52e475
Author: Ali Veli <ali.veli@gmail.com>
Date:   Tue Jul 16 09:38:35 2013 -0430

    ISSUE-1 - required function sendRequest implemented for Soap Adapter

    Change-Id: Id4f7ffdaef1f905b029d4818e1e07d1d5bc60bf1

commit 70c6059f32b5569ef32875d38da564d7a6d128ed
Author: Ibrahim Gunduz <ibrahim.gunduz@markafoni.com>
Date:   Tue Jul 16 16:54:20 2013 +0300

    ISSUE-2 - Event listener communication kutuphanesiyle iliskilendirilmesi-devam ediyor.

commit 87f166fa0460db40a240200dd093196f2195bb88
Author: Ibrahim Gunduz <ibrahim.gunduz@markafoni.com>
Date:   Tue Jul 16 13:13:26 2013 +0300

    ISSUE-2 - EventManager soyutlamasiyle ilgili gelistirme yapildi.

Rebase işleminden sonra yerel depoda Ali Veli kullanıcısının değişikliklerinin bazı commitlerin tarihi daha eski olduğu halde en üst sıraya taşınması dikkatinizi çekti mi ?

2. Pull ve Rebase Hangi Durumlarda Kullanılmalı ?

pull komutu uzaktan gelen değişiklikleri, zamana bağlı olarak yerel dalla birleştirir. Dolayısıyla geliştirme yaptığınız dalları pull ile güncellemek, birden fazla commit e sahip olan işlerde araya giren farklı işlerin commitleri nedeniyle sürüm günlüğünün okunmasını güçleştirecektir. Bu nedenle git pull (veya fetch+merge) komutunu yalnızca ana dalı güncellemek için kullanmak daha doğru bir yaklaşım olacaktır.

git pull ile gerçekleşen güncelleme :

commit e572de2efb567fc71c4b1514c7187f5d07eac6c2
Author: Ali Veli <ali.veli@gmail.com>
Date:   Wed Jul 17 02:13:50 2013 -0430

    ISSUE-1 - Soap adapter'ı için son committe eksik kalan fonksiyonlar eklendi.

    Change-Id: Iee83313671916bfb1e13fbc8f5b71408be202749

commit 70c6059f32b5569ef32875d38da564d7a6d128ed
Author: Ibrahim Gunduz <ibrahim.gunduz@markafoni.com>
Date:   Tue Jul 16 16:54:20 2013 +0300

    ISSUE-2 - Event listener communication kutuphanesiyle iliskilendirilmesi-devam ediyor.

commit 87f166fa0460db40a240200dd093196f2195bb88
Author: Ibrahim Gunduz <ibrahim.gunduz@markafoni.com>
Date:   Tue Jul 16 13:13:26 2013 +0300

    ISSUE-2 - EventManager soyutlamasiyle ilgili gelistirme yapildi.

commit 89cc1c898ff01ff945c3423d22ed143dda52e475
Author: Ali Veli <ali.veli@gmail.com>
Date:   Tue Jul 16 09:38:35 2013 -0430

    ISSUE-1 - required function sendRequest implemented for Soap Adapter

    Change-Id: Id4f7ffdaef1f905b029d4818e1e07d1d5bc60bf1

Geliştirme yaptığınız dalları güncel tutmak içinse rebase komutu kullanmak, geliştirme yaptığınız commitleri bir arada tutabilmek adına çok daha doğru bir yaklaşım olacaktır. Böylelikle sürüm günlüğünde belirli bir işle ilgili tüm değişiklikleri bir arada tutarak günlüğün okunmasını kolaylaştırmış olursunuz.

rebase komutu ile geliştirme dalının güncellenmesi :

commit e572de2efb567fc71c4b1514c7187f5d07eac6c2
Author: Ali Veli <ali.veli@gmail.com>
Date:   Wed Jul 17 02:13:50 2013 -0430

    ISSUE-1 - Soap adapter'ı için son committe eksik kalan fonksiyonlar eklendi.

    Change-Id: Iee83313671916bfb1e13fbc8f5b71408be202749

commit 89cc1c898ff01ff945c3423d22ed143dda52e475
Author: Ali Veli <ali.veli@gmail.com>
Date:   Tue Jul 16 09:38:35 2013 -0430

    ISSUE-1 - required function sendRequest implemented for Soap Adapter

    Change-Id: Id4f7ffdaef1f905b029d4818e1e07d1d5bc60bf1

commit 70c6059f32b5569ef32875d38da564d7a6d128ed
Author: Ibrahim Gunduz <ibrahim.gunduz@markafoni.com>
Date:   Tue Jul 16 16:54:20 2013 +0300

    ISSUE-2 - Event listener communication kutuphanesiyle iliskilendirilmesi-devam ediyor.

commit 87f166fa0460db40a240200dd093196f2195bb88
Author: Ibrahim Gunduz <ibrahim.gunduz@markafoni.com>
Date:   Tue Jul 16 13:13:26 2013 +0300

    ISSUE-2 - EventManager soyutlamasiyle ilgili gelistirme yapildi.
Share Button

About İbrahim Gündüz

1983 yılında İstanbul’da doğdu. İlkokul yıllarında cobol ve basic le olan tanışması, yazılıma olan ilgisini arttırdı 2005 yılında. Uludağ Üniversitesi Teknik Bilimler Meslek Yüksek Okulu Elektronik bölümünden mezun olan Gündüz, çeşitli alanlarda faaliyet gösteren kurumlarda yazılım geliştirici olarak görev almıştır. Mesleki ilgi alanları, ölçeklenebilir sistemler, uygulama entegrasyonları ve ödeme sistemleridir. Halen Markafoni back end geliştirici olarak çalışmaktadır.

4 Comments

  • Eylül 5, 2013 - 11:46 am | Permalink

    aah usta ah, kalabalik gelistiricilerin calistigi projelerde birak branch[dal (: ] yapmayi adamlar* clearcase** kullanip ustune bir de “branch yapmak cok tehlikeli, expert developerlarimiz yasakladi” diyor. yoo, saka degil.

    * ismini vermek istemeyen ama baya buyuk bir telekomunikasyon firmasi
    ** clearcase dunyanin en kotu surum takip yazilimi, atomik commit kavrami falan yok :/

  • Eylül 5, 2013 - 12:05 pm | Permalink

    Branch kullanımından korkan leadler, sürüm yönetimi kullandığı halde sürümün içinde hala index1, index2, index3… gibi php betikleri barındıranlar, imajları sürüm yönetiminde tutanlar… Hangi birine sövelim buradan :)

    Firmaların büyüklüğünden çok projenin başındaki adamın kafasının ne kadar çalıştığı önem arzediyor.

  • Eylül 6, 2013 - 8:54 am | Permalink

    İbrahim ellerine emeğine sağlık.

    Diğer konuda diyecek çok şey var. Ama şu kadarını söyleyim git-flow gibi dal yönetimi yaklaşımlarım var ve bunları destekleyen programlar vs ler var. O kadar korkmamak lazım.

  • Eylül 8, 2013 - 10:50 am | Permalink

    Çok sağol Onur. Yüzde yüz katılıyorum. Ama işte öncelikle internetin facebook ve twitter dan ibaret olmadığını anlamak gerekiyor sanırım.

  • Bir Cevap Yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir