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 >>ÔÇő