Published on

Git Branch Nedir ve Nasil Kullanilir ?

Authors
  • avatar
    Name
    Alperen Önal
    Twitter
  • Git'de branch(dal) kavramı, projedeki farklı çalışma hatlarının oluşturulması ve yönetilmesine olanak sağlar.
  • Her branch, projenin farklı bir çalışma hattını veya çalışma sürecini temsil eder.
  • Bu konunun anlaşılabilmesi için commit, working directory, staging area, repository gibi temel konularının bilinmesi gereklidir.
  • Genelde, farklı kişilerin aynı repo üzerinde çalıştığı durumlarda her geliştirici, ayrı bir branch oluşturarak çalışmasını ana branch ile birleştirmeyi hedefler. Bu, geliştiricilerin birbirlerinin commit'lerini bozmasını büyük ölçüde engeller ve/veya risksiz olarak deneysel çalışmalar yapabilmelerini sağlar.

Git'de HEAD Kavramı Nedir ?

HEAD, bulunulan branch' işaret eden pointer'dir.

Repo'nuzun bulunduğu dizindeki .git klasörünün içine girerek HEAD dosasının içeriğini okuduğunuz zaman, işaret edilen branch'ı(bulunduğunuz branch) görebilirsiniz.

Örneğin : Yeni bir repo oluşturdum ve "inital commit" isimli ve "86d8f42" hash'i olan ilk commit'imi attıktan sonra .git/HEAD içerisinde girdiğimde "ref: refs/heads/master" bu yazı ile karşılaştım. Yani şuanda master branch'indeyim.

Bunu gösterecek olursak :

86d8f42: Bu, ilgili commit'in SHA-1 hash'ini temsil eder. Her bir commit için benzersizdir ve Git'in her bir commit'i ayırt etmesini sağlar.

Git Branch Komutları Nedir ?

git branch

Halihazırda bulunan branch'ların ismini verir.


git branch yeni_branch_adi

Yeni bir branch oluşturur.


git checkout hedef_branch_adi

Adi verilen hedef branch'a geçiş yapar.(HEAD işaretçisini hedef branch'a işaret edecek şekilde ayarlama yapar.)


git branch -d silinecek_branch_adi

veya

git branch --delete silinecek_branch_adi

Adı verilen branch'i siler.


git branch -D silinecek_branch_adi

veya

git branch --delete --force silinecek_branch_adi

Adı verilen branch'i uyarıları göz ardı ederek siler.(Eğer branch'ınızı merge etmediyseniz muhtemelen uyarı verecek ve bu işlem için force bayragını kullanmanızı isteyecektir.)


git branch -m eski_branch_adi yeni_branch_adi

Bir branch'ın ismini günceller.(Hatırlatma : Github'da kök branch için "main" ismi kullanılırken git'de "master" kullanılmaktadır. Bu yüzden yereldeki bir çalışmamızı github'da yeni açtığımız bir repo'ya push ederken yerelde "git branch -M main" yazarak kök branch'in adını güncelleriz ve ardından push işlemine geçeriz.)


git branch -r

Uzaktaki branch'leri listeler.


git branch -a

Tüm local ve uzak branch'leri listeler.


git merge yeni_feature

Branch'lari birleştirir.(Bu başka videonun konusu :) )


Git Branch Örnek Uygulama

Güncel Durum :

  • 86d8f42 numaralı "initial commit"im var. Ve bu commit'in içerisinde alinacaklarlistesi.txt metini var.

alinacaklarlistesi.txt içeriği :

  • Şuanda HEAD'ımız master branch'ı üzerinde. (HEAD -> master)

Yapmak istediğimiz :

  1. alinacaklarlistesi.txt içerisine 2 tane el feneri, 1 tane telsiz, 1tane uyku tulumu eklemesi yap.
  2. Master branch üzerinde "alinacaklar listesine ekleme yap" isimli bir commit oluşturarak bu değişiklikleri commit et.
  3. "alinacaklar listesine ekleme yap" isimli commit'in oradan yeni bir branch oluştur. İsmi alpereninlistesi yap. Ardından bu branch'a geç.
  4. alinacaklarlistesi.txt'ye 1 tane battaniye 1 tane yastık ekle ve bu değişiklikleri "alperenin listesini ekle" başlığı ile commit et.
  5. Master branch'ına geri dön ve alinacaklarlistesi.txt içerisine bak ardından mevcut tüm branch'ları ve HEAD'ın nereye işaret ettiğini öğren.
  6. "alpereninlistesi" isimli branch'ı sil.

Adım Adım Yapalım

1-) alinacaklarlistesi.txt içerisine 2 tane el feneri, 1 tane telsiz, 1tane uyku tulumu eklemesi yap.


2-)Master branch üzerinde "alinacaklar listesine ekleme yap" isimli bir commit oluşturarak bu değişiklikleri commit et.

3-)"alinacaklar listesine ekleme yap" isimli commit'in bulunduğu noktadan yeni bir branch oluştur. İsmi alpereninlistesi yap. Ardından bu branch'a geç.


4-)alinacaklarlistesi.txt'ye 1 tane battaniye 1 tane yastık ekle ve bu değişiklikleri "alperenin listesini ekle" başlığı ile commit et.


5-)Master branch'ına geri dön ve alinacaklarlistesi.txt içerisine bak ardından mevcut tüm branch'ları ve HEAD'ın nereye işaret ettiğini öğren.


6-)"alpereninlistesi" isimli branch'ı sil.