Git Notları #6 — Branch Silmek ve Merge Kavramı

Merhabalar çok kıymetli takipçiler ve okurlar. Geçen yazımızın sonunda söylediğim üzere bu yazıda branch silme işleminden ve merge (birleştirme) işleminden bahsedeceğim. Çok uzun bir yazı olmayacak.

Branch Silmek

Çeşitli sebeplerden dolayı branchleri silmek isteyebilirsiniz. Belki o branchte geliştirdiğiniz özelliği iptal etmiş olabilirsiniz veya yanlışlıkla bir branch oluşturmuş olabilirsiniz. Şimdi bir önceki yazıda oluşturduğumuz çalışma dizinimize gidelim ve yeni bir branch oluşturalım.

git branch bu_branch_silinecek

Şimdi git branch diyelim ve bütün branchlerimize bir bakalım.

Gördüğünüz üzere yeni branchimiz başarılı bir şekilde oluşturulmuş. Şimdi bu branche gidelim.

git checkout bu_branch_silinecek

Gördüğünüz gibi branchimiz değişti. Şimdi yeni bir dosya oluşturalım ve bu dosyamızı gite ekleyelim. Herhangi bir dosya ve içeriğinde de herhangi bir şey olabilir. Örnek olarak ben merhaba.php adında bir dosya oluşturup içerisinde de sadece şu satırı ekleyeceğim.

<?php echo "Merhaba"; ?>

Şimdi bu dosyayı gite ekleyelim.

git add merhaba.php

Git status komutunu verdiğimiz zaman bu_branch_silinecek branchinde olduğumuzu ve merhaba.php dosyamızın commite hazır olduğunu görebiliriz.

Şimdi bir commit alalım.

git commit -m "merhaba dosyasi olusturuldu."

Evet, şimdi sıra branchimizi silmeye geldi. Branch silmek için branch komutuna -d veya --delete parametrelerini veriyoruz. İkisi de birbirinin aynısı. Hiçbir farkı yok. Şimdi isterseniz artık bu kullanmayacağımız branchimizi silelim. Şöyle bir mesela var ki üzerinde çalıştığımız mevcut branchi silemiyoruz, daha farklı bir ifadeyle üzerine bindiğimiz dalı kes(e)miyoruz. Bu işlemi yapmaya çalıştığınız zaman aşağıdaki gibi bir hatayla karşılaşacaksınız.

Öncelikle farklı bir dala geçiş yapmamız gerekiyor. Mesela master dalına geçiş yapalım.

git checkout master

Şimdi tekrar aynı komutu verelim ve sonucuna bakalım.

Hata mesajında bize söylemek istediği şey şu: “Sen bu branchi sileceksin ama bu branch başka hiçbir branchle birleştirilmemiş henüz. Yine de silmek istiyor musun ?”

Bu kısımda biraz kafanız karışmış olabilir. “Birleşmek ne oluyor acep ?” diye düşünüyor olabilirsiniz. Şimdi şöyle düşünebilirsiniz. Biz programımızı tek bir çizgi üzerinde geliştiriyoruz ilk başta. Programımızı şuna benzetebilirsiniz. Yatay olan çizgi bizim projemiz ve dikey olan çizgiler de yaptığımız değişiklikler.

Biz aslında yeni bir branch oluşturarak projemizi tek bir çizgi yerine iki çizgi üzerinde ilerletmeye başladık.

Yani projemiz şu hale geldi:

Şimdi branch kavramıyla ilk tanıştığımız zamanlara dönüp bir bakalım. Biz branchleri ne için kullanmıştık senaryomuzda ?

Yeni özelliğimiz mevcut bir özelliğimizi bozabilir diye bu yeni özelliğimizi karantina altında geliştirmek istemiştik. Yeni özelliğimizi geliştirdik ve bizim mevcut özelliğimizi bozmadı, peki şimdi ne yapacağız ?

Projemizi tekrar iki daldan tek dala indireceğiz. Yeni özelliğimizi projemizin mevcut haliyle birleştireceğiz ve artık iki özelliğimizi de kullanabiliyor olacağız. Bu aşamadan sonra projemiz tam olarak şu hale gelmiş olacak:

Çok rezil bir şekilde çizilmiş olan şemadan da görebileceğiniz üzere yeni dalımızdaki değişiklikleri mevcut dalımızla birleştirdik ve projemizi tekrar tek bir dala indirgemiş olduk.

Git’in az önce aldığımız hata mesajında bahsetmeye çalıştığı şey de tam olarak buydu. Diyor ki sen bu yeni özelliği projenin herhangi bir dalıyla birleştirmedin, eğer silersen yaptığın her şey boşa gidecek. Emin misin ?

Eğer silmek istediğimizden eminsek o zaman şu komutu vereceğiz.

git branch -D bu_branch_silinecek

Büyük D harfi kullandığınız zaman Git, bu silmek istediğiniz branchi silmeye zorluyor ve siliyor. Bu işlemi yaptıktan sonra şu şekilde bir sonuçla karşılaşmanız gerekiyor.

Branchimizin silindiğini söylüyor bize arkadaş. Şimdi isterseniz bu durumu bir teyit edelim.

git branch

Gördüğünüz üzere branchimiz silinmiş. Bu şekilde merge etmek istemediğiniz branchleri silmek istediğinizde silebilirsiniz. Şimdi isterseniz bu merge işleminin ne olduğuna bir bakalım.

Merge Nedir, Nasıl Yapılır ?

Merge kelimesi, Türkçeye “birleşmek” olarak çevrilir. Git’in güzel yanlarından birisi de budur zaten. Verdiğiniz komutlar direkt olarak yapılan iş hakkında bilgi verir. Örneğin git add (ekle), eklemeye yarar. Git commit (işlemek), kayıt almaya, git merge (birleştirmek), iki branchi birleştirmeye yarar. Gördüğünüz gibi isimlerin anlamları ve yaptığı işler birbiriyle son derece yakındır ve bu durum birçok komut için geçerlidir. Anlamsız veya soyut isim kullanımından mümkün olduğunca kaçınılmıştır. Neyse konuyu çok dağıtmayalım. Merge dediğimiz işlem iki branchi birleştirmektir.

Hatırlarsanız eğer master branchimiz üzerinden carpma_ozelligi adında bir branch oluşturmuştuk ve bu carpma_ozelligi branchimizden de advanced_carpma adında bir branch oluşturmuştuk. Şimdi şöyle bir şey yapalım. Artık advanced çarpma özelliğimizin tam anlamıyla çalıştığından eminiz. Ana uygulamamıza bu advanced çarpma özelliğini eklemek istiyoruz. Bunun için öncelikle master branchimize geçeceğiz ve daha sonra merge komutunu çalıştıracağız.

git checkout master

Master branchimize geçtik, şimdi merge komutuyla Git’e advanced_carpma dalındaki değişiklikleri master dalıyla birleştirmesini söyleyeceğiz.

git merge advanced_carpma

Bu komutu verdikten sonra şu çıktıyla karşılaşmış olmalısınız.

Şu anda yapımız tam olarak şuna benzedi:

Branch isimlerini kısaltıp yazmak durumunda kaldım. Tabletin yazılımını bilgisayara yüklememişim, mouse ile yazmak zorunda kalıyorum 😢. Neyse, konumuza dönelim. Gördüğünüz üzere advanced_carpma branchimizi master ile birleştirdik. Artık advanced_carpmadaki o gelişmiş çarpma fonksiyonumuz master branchimizde ama hala diğer iki branchimiz bir kenarda duruyor. Bunlarla işimiz bitti bizim. Temizlesek iyi olmaz mı ?

Şimdi şu gördüğünüz kırmızı işaretli kısmı kaldıralım ve programımızı tekrar tek dala indirgeyelim.

Şimdi tek yapmamız gereken bu iki branchi teker teker silmek. Silme sırası hiç fark etmez. Sadece silin yeter.

git branch -d advanced_carpma

git branch -d carpma_ozelligi

Fark ettiyseniz bu sefer -D değil -d kullandık. Çünkü branchimizin ucu açık değil artık, merge edilmiş olduğu bir başka branch var. Devam edelim konumuza. Bu iki komutun sonrasında da “Deleted branch bla bla” şeklinde bir çıktı elde etmeniz gerekiyor. Şimdi isterseniz git branch diyelim ve bir bakalım branch listemizin son haline.

Gördüğünüz üzere sadece master branchine sahibiz. Merak edenler func.php dosyamızın içeriğine tekrar bakabilirler. Geliştirilmiş çarpma özelliğimizin dosyanın içerisinde olduğunu göreceksiniz.

Merge etme işlemi ve branch silme işlemleri bu kadardı. Her zamanki uyarımı tekrarlayayım. Yazıda eksik, hata vb. şeylerle karşılaşırsanız lütfen bunları yorumları kullanarak belirtin ki diğer insanlar ben yazıyı düzeltene kadar sizin yorumunuz sayesinde doğrusunu öğrensin.

Bu seferlik bu kadar. Başka yazılarda görüşmek üzere, kendinize iyi bakın.

Web Developer @ Megafonn Creative Digital Agency. Blogger, Youtuber. (More information: zahidefe.net)

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store