Welcome to My Blog 👋

Java, Spring Framework, Microservices, Docker, Kubernetes, AWS and Others 🚀
Follow Me

Git Branch Nedir? - Branch'lar ile Nasıl Çalışılır?



  January 12, 2019    Labels:,,,,,,,,,, 

Bu yazımda Git'te bulunan branch kavramını anlatacağım. Branch, Türkçe'de dal anlamına gelmektedir. Buradan anlaşılacağı üzere projemizin yeni bir dalını oluşturmak anlamına gelir. Projemiz birbirinden bağımsız olarak birden fazla şekilde geliştirilmesi gerekebilir. Buradaki farktan kasıt projenin aynı olması ama uygun durum oluşana kadar birbirinden bağımsız olması gerektiğidir. 

Örneğin iş dünyasında dev, test, uat ve prod gibi branch'lar kullanılır. Bunların anlamı şöyledir;

  • Dev ortamı, projeyi geliştiren developer'ların kodlarını sakladıkları branch'tır. Bu kodları hazır olduğunu düşündükleri zaman test ortamına merge ederler. Yani test ortamına gönderirler. Buradaki uygunluktan kasıt, üzerinde çalıştıkları kod parçalarının kullanıma hazır olduğunu düşündükleri uygunluktur.
  • Test ortamı, projeye eklenen kodların test mühendisleri tarafından test edildiği branch'tır. Dev ortamından bağımsız olarak bu ortamda test edilmeye hazır kodlar bulunur. Oysaki dev ortamında daha üzerinde çalışılan, test için uygun olmayan kodlarımızda bulunuyordu.
  • Uat ortamı, projemizde test'ten geçen kodların gerçek dünyada kullanılmadan önce son kez test edildiği branch'tır.
  • Prod ortamı, projemizin gerçek dünyada kullanılabilir halinin bulunduğu branch'tır. Buraya gönderilen tüm kodlar direkt olarak projemizi kullanan kullanıcıları etkiler.


Yukarıdan örnekten anlaşılacağı gibi bir proje geliştirirken projenin farklı durumlarını saklamamız ve bunlar üzerinde çalışma yapmamız gerekebilir. Bu durumlarda branch kullanılır.

Aşağıdaki komut ile bir branch oluşturulur. Branch komutu, o an projemizin bulunduğu hali kopyalar ve yeni bir branch olarak oluşturur. Daha sonra projemizin ilk hali ve yeni branch ayrı projelermiş gibi düşünülebilir. Birinde yaptığımız değişiklik diğerini etkilemez. Burada dikkat edilmesi gereken konu projemizi ilk oluşturduğumuzda master branch'ı oluşur. Biz yeni bir branch oluşturmadığımız sürece sadece master branch'ı olur ve biz bu branch üzerinde işlem yaparız. Branch adı ile branch'imize vermek istediğimiz adı belirtiriz.

git branch branchAdı

Eğer bir branch'ı silmek istersek aşağıdaki komutu kullanabiliriz. Branch adı ile silmek istediğimiz branch'ın adını belirtiriz.

git branch -d branchAdı

Aşağıdaki komut ile local'imizdeki branch'ları ve bizim hangi branch üzerinde olduğumuzu görebiliriz.

git branch 

Aşağıdaki komut ile eğer uzak depo kullanıyor isek o depodaki branch'ları görebiliriz. Yeni bir branch oluşturduğumuzda bu branch'taki değişiklikleri uzak depoya gönderirsek otomatik olarak branch uzak depoda da oluşturulacaktır.

git branch --remote

Aşağıdaki komut ile hangi branch üzerinde çalışmak istediğimizi belirtiririz ve local projemiz o branch'e göre güncellenir.

git checkout branchAdı

Branch'lar üzerinde değişiklik yaptıktan sonra iki branch arasındaki farklılıkları görmek için aşağıdaki komutu kullanırız.

git diff branch1Adi branch2Adi

Eğer iki branch'ın kodlarını birleştirmek istersek yani örneğin dev ortamındaki kodlarımızı int ortamına taşımak istersek aşağıdaki komutu kullanırız. Aşağıdaki komut, komut ile belirttiğimiz branch'ın üzerinde yaptığımız değişiklikleri üzerinde bulunduğumuz branch'a da uygular. Bu şekilde iki branch'ta o anda aynı kodları içerir.

git merge branchAdi


No comments:

Post a Comment