Ana Sayfa Kitabı Online Oku Yazar Hakkında

10.Gün: Rebase

Git’de merge ve rebase komutları benzer işlevleri yerine getirmek için kullanılıyor. Her iki komut da bir daldaki değişiklikleri başka bir dala birleştirmek için kullanılır. Ancak bu iki komut arasında proje tarihçesinin oluşturulması ile ilgili ciddi bir farklılık vardır.

Merge komutu ile A dalındaki değişiklikler B dalı ile birleştirildiğinde B dalının commit tarihçesinde merge işleminden kaynaklanan ve merge commit adı verilen otomatik oluşturulmuş bir commit yer alır. Bu commit A ve B dallarının tarihçelerini birbiri ile ilişkilendirir.

Merge commit’in ayrıntılarını kitabımızın 5. Bölümünde “Merge Alternatifi Olarak Rebase Kullanımı” başlığı altında ele almıştık.

rebase komutu kullandığımızda ise ile A dalındaki her bir commit B dalına sanki commit işlemi B dalında yapılmış gibi yeniden yazılır. Bu sayede B dalının commit tarihçesi sanki tüm değişiklikler bu dalda olmuş gibi düz ve kesintisiz görünür.

Ne zaman rebase kullanmalıyız?

Rebase komutu yerel ve kısa süreliğine (örneğin bir hata giderme veya deneysel bir çalışma için oluşturulan) geçerli dallar için kullanılmalı. Paylaşılan depolarda rebase komutunu kullanmamanızı tavsiye ediyorum, çünkü rebase sonrasında projenizin ana dallarında değişikliklerin nereden kaynaklandığına dair bir bilgi veya ipucu göremezsiniz. Bu durum takım çalışmasını olumsuz yönde etkiler.

Alıştırmalara başlamadan önce master dalından kopyalanan yerel bir dal oluşturun

Alıştırma-1

# Proje klasörünüze konumlanın
cd <proje_kök_klasörü_yolu>

# master dalını aktif hale getirelim
git checkout master 

# Yeni bir dosya oluşturun
touch ornek_rebase1.txt

# Değişikliklerinizi commit edin
git add -A .
git commit -m “Ad ve soyad eklendi” 

Alıştırma-2

# Proje klasörünüze konumlanın
cd <proje_kök_klasörü_yolu>

# Oluşturduğunuz dalı aktif hale getirelim
git checkout <dalınızın adı> 

# rebase işlemini yapın
git rebase master 

# dalınızın commit tarihçesinin bilgilerini listeleyen
git hist --all # repository tarihçesine göz atın

Soru-1: Merge ile rebase arasındaki farkı yorumlayın.

Alıştırma-3

# Proje klasörünüze konumlanın
cd <proje_kök_klasörü_yolu>

# master dalını aktif hale getirelim
git checkout master 

# ornek_rebase1 dosyasının içeriğini metin editörünüz ile değiştirin
git add -A .
git commit -m “Master dalındaki değişiklik mesajınız”

# Dalınızı aktif hale getirin
git checkout <dalınızın adı> 

# ornek_rebase1 dosyasının içeriğini metin editörünüz ile değiştirin
git add -A .
git commit -m “Diğer daldaki değişiklik mesajınız”

# rebase işlemini yapın
git rebase master
« Geri İleri »