Git’te bir “branch” (dal), projenin belirli bir noktasından türetilen ve bağımsız olarak geliştirilebilen bir dizi commit’in bir parçasıdır. Ana projenin bir kopyası gibi düşünülebilir veya aynı hedefe giden bir yan yol diyebiliriz. Ancak kendi bağımsız gelişim yolu ve geçmişi vardır.
Bir branch’ı, genellikle projemize belirli bir özellik eklemek, hata düzeltmek veya deneme yapmak istediğimiz zamanlarda kullanırız. Bazende takım çalışmasında her geliştirici için ayrı bir branch açarız.
Unutmayalım ki her bir branch, kendi değişikliklerini barındıran ve diğer branch’lerden bağımsız olarak yönetilen bir iş akışı sağlar.
Branch’lerin kullanılmasının ana avantajlarından bazıları şunlardır:
Bu projemi bir önceki konuda oluşturduğum index.html üzerinden ilerleyeceğim. Bir önceki projeyi incelemek için aşağıdaki linki kullanabilirsiniz.
Index.html sayfamıza bazı yeni özellikler ekleyelim. Lokal git repomuzda çalışıyoruz ve ana projeyi bozmak istemiyoruz. O zaman yeni bir branch oluşturalım.
git branch yeni-calisma
Şu anda “yeni-calisma” adlı bir branch olusturduk. Şimdi yeni bir branch oluşturduğumuzu doğrulayalım:
git branch
* master
yeni-calisma
“yeni-calisma” isimli yeni bir branch oluştuğunu görebiliriz ancak master’ın yanındaki * işareti şu anda o branch’da olduğumuzu belirtir.
checkout, bir branch kontrol etmek için kullanılan komuttur. Bizi mevcut branch’dan komutun sonunda belirtilen branch’a taşıyalım.
git checkout yeni-calisma
Switched to branch 'yeni-calisma'
Artık mevcut çalışma alanımızı master branch’dan yeni branch’a taşıdık. Kodumuz üzeride yeni düzenlemeler yapalım.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Hello world!</h1>
<p>Yeni Bir Satır Kod Eklendi</p>
<p>Ikinci Bir Satır Eklend</p>
<img src="https://via.placeholder.com/300x200" alt="Yeni Bir Resim" style="width:100%;">
</body>
</html>
Şimdi Git repomuzun durumunu kontrol edelim.
git status
On branch yeni-calisma
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: index.html
no changes added to commit (use "git add" and/or "git commit -a")
index.html dosyamızda değişiklikler var, ancak dosya işleme için hazırlanmadı. O zaman bu branch için dosyaları yeni-calisma adlı bracnh’a ekleyelim.
git add --all
Şimdi branch’ın durumunu tekrar kontrol edelim:
git status
On branch yeni-calisma
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: index.html
Değişiklikleri kontrol ettik her şey normal o zaman commit edelim.
git commit -m "yeni bir resim eklendi"
[yeni-calisma bc1d36a] yeni bir resim eklendi
1 file changed, 2 insertions(+), 1 deletion(-)
Artık master branch’dan farklı yeni bir branch’ımız var.
Şu anda yeni-calisma adli branch’dayız. Bu dala bir resim ekledik, dilerseniz kodumuzun son halini tekrar görelim.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Hello world!</h1>
<p>Yeni Bir Satır Kod Eklendi</p>
<p>Ikinci Bir Satır Eklend</p>
<img src="https://via.placeholder.com/300x200" alt="Yeni Bir Resim" style="width:100%;">
</body>
</html>
Her şey olması gerektiği gibi. Şimdi branch’ı master olarak değiştirdiğimizde ne olacağını görelim.
git checkout master
Switched to branch 'master'
Tekrar kodumuza baktığımızda img kodumuzun olmadığını göreceğiz.
Hızlı bir şekilde branch oluşturup geçiş yapıp kullanmak için aşağıdaki kodu kullanabiliriz.
git checkout -b hizli-calisma
Switched to a new branch 'hizli-calisma'