Git'de Branch Nedir? Nasıl oluşturulur?
Tags: git, branch
Published: 2020-10-02 07:41:41

## Başlıklar
  * [Branch Oluşturmak](#branch-1)
  * [Yeni Bir Branch Oluşturmak](#branch-2)
  * [Branchleri Listelemek ve Branchler Arasında Gezinmek](#branch-3)


### **Branch Oluşturmak** <a name="branch-1"></a>
   Branch oluşturmak kullanıcıya çalıştığı projenin farklı versiyonlarına erişmesini sağlar. Kullanıcı, projesine bir yenilik eklemek istediğinde, yaptığı değişiklik projenin çalışmasını olumsuz etkileyebilir. Bu gibi durumlarda projemizin o anki halini bozmamak için branch kullanabiliriz. Branch yardımı ile projemizin çalışır halini kaydedip, yeni eklenti üzerinde rahatlıkla çalışabiliriz. Projemizde herhangi bir sorun çıktığı takdirde geri dönüp önceki versiyona kolaylıkla erişebiliriz. Branch, sadece projenizi değiştirirken ya da güncellerken eski halini korumak ile kalmıyor. Projenize bir versiyon çıkarttığınız zaman her yeni versiyon için repository oluşturmak yerine her bir versiyon için farklı branchler açabilirsiniz. Böylece versiyonları bir arada kolayca takip edebilir ve erişebilirsiniz.

   Git’de proje oluşturduğunuzda varsayılan olarak **master** adında bir branch oluşturulur. Eğer hiçbir değişiklik yapmadan çalışmaya devam edersek, bütün işlemlerimizi master branch’i üzerinden yapmış oluruz. Yeni bir eklenti yapacağımız zaman master branch’i üzerinde yeni bir branch açabiliriz. Böylece hem dosya kalabalığının hem de dosya boyutunun katlanmasının önüne geçmiş oluruz. Bunun yanı sıra istediğimiz zaman da bu iki farklı branch’i birleştirebiliriz.

_Kısacası, bir proje geliştirirken final.py finalv2.py finalsonhali.py gibi hangi dosyanın ne içerdiğini bilmediğimiz karmaşık bir yapıdan bizleri kurtarıyor._


![Branch-gorsel](https://i.hizliresim.com/Rg8CvP.png)

Şimdi yeni bir klasör oluşturup aşağıdaki komutu verelim.
```bash
git init
```

Örneğin, basit bir toplama işlemi yapan bir PHP (islemler.php) dosyamız olsun. Biz bu kodumuza eklenti olarak çarpma işlemi de hesaplamasını istiyoruz. Fakat, bu eklentiyi yaparken toplama işlemi fonksiyonunun işleyişini bozabiliriz. Bu yüzden eklentimizi güvenli ortamda geliştirmek için önce toplama işlemi dosyamızı Git’e ekleyip commit yapalım.

```bash
git add islemler.php
```

```bash
 git commit -m “toplama_islemi eklendi”
```

Yukarıdaki işlemleri gerçekleştirdikten sonra toplama işlemi yapan kodumuzu güvenli bir şekilde kaydettik. Şimdi ise rahatlıkla çarpma işlemi eklentisi üzerinde çalışabiliriz.

### **Yeni Bir Branch Oluşturmak** <a name="branch-2"></a>

Git’de iki farklı şekilde branch oluşturabiliriz. Bu yollardan bir tanesi git branch komutunu kullanmak, diğeri ise git checkout -b parametresi vermek. Git branch komutu sadece yeni bir branch oluştururken, git checkout -b “…” komutu yazdığınız isimde branch yoksa onu oluşturur ve bulunduğunuz branch değiştirilir.

```bash
git checkout -b “carpma_islemi”
```

Bu komuttan sonra aşağıdaki yazıyı görüyorsanız doğru yoldasınız demektir.

```bash
Switched to new branch “carpma_islemi”
```

Şimdi yeni bir branch oluşturduğumuza ve çalışma branchimizi değiştirdiğimize göre önceden yarattığımız toplama.php dosyasını açıp çarpma işlemi eklentimizi ekleyebiliriz. Bundan sonra yapacağımız değişiklik carpma_islemi adındaki branchimize kaydedilecektir. İstediğimiz zaman master adındaki branchimize dönebilir ya da carpma_islemi ile birleştirebiliriz (merge). Değişiklikleri yaptıktan sonra dosyamızın yeni halini ekleyip commit edebiliriz.

```bash
git add islemler.php
```
```bash
git commit -m “carpma islemi eklendi”
```

### **Branchleri Listelemek ve Branchler Arasında Gezinmek** <a name="branch-3"></a>

Git’de branch değiştirmek için git checkout komutunu kullanabiliriz. git checkout komutunu yazdıktan sonra gitmek istediğiniz branch’in adını yazmanız yeterlidir. Eğer gitmek istediğiniz branch’in adını hatırlamıyorsanız git branch komutu ile bütün branchleri listeleyebilirsiniz.

_(Branchleri listeler)_
```bash
git branch
``` 

_(carpma_islemi branchine geçiş yapar)_

```bash
git checkout carpma_islemi
``` 

git branch komutunu yazdıktan sonra bulunduğunuz branch’in yanında * işareti bulunur. Eğer carpma_islemi branchindeysek islemler.php dosyasının içeriğinde, eklediğimiz çarpma işlemi fonksiyonunu da görebiliriz fakat master branch’ine dönersek sadece toplama işleminin olduğunu göreceğiz.

_(master branchine geçiş yapar)_

```bash
git checkout master
``` 

Böylece iki farklı versiyonda islemler.php dosyamız mevcut. Sadece toplama işlemine sahip olan master branch’i ve hem toplama hem de çarpma işlemine sahip carpma_islemi branch’i. Eğer bölme işlemi gibi bir eklenti eklemek istiyorsak, git branch bölme_islemi diye bir branch açabilir ya da git checkout -b bölme_islemi diye branch açıp çalışma branchimizi de değiştirerek eklentimizi yapabiliriz. Bunun ardından aynı şekilde git add ve commit komutlarını yazarak projemizin üstüne koyarak ilerleyebiliriz.