Git Rebase
Son güncelleme
git rebase dalınızın commit'lerini başka bir dalın üzerine yeniden oynatacak şekilde taşır ve bir merge commit'i yerine düz, doğrusal bir geçmiş üretir. İnteraktif rebase (-i) daha ileri gider ve commit'leri birleştirmenize, yeniden sıralamanıza, düzenlemenize veya çıkarmanıza olanak tanır. Rebase commit'leri yeniden yazdığı için, bunu yalnızca henüz paylaşmadığınız çalışmalarda yapın.
Bunları terminal playground'da deneyin: tarayıcınızda gerçek bir kabuk, kurulacak hiçbir şey yok.
Söz dizimi
| Command | What it does |
|---|---|
git rebase main | Commit'lerinizi main üzerine yeniden oynatır |
git rebase -i HEAD~3 | Son 3 commit'i interaktif olarak düzenler |
git rebase --onto main old new | Bir commit aralığını main üzerine taşır |
git rebase --continue | Çakışmaları çözdükten sonra devam eder |
git rebase --abort | Rebase'i iptal eder, dalı geri yükler |
git pull --rebase | Merge yerine pull ve rebase yapar |
İnteraktif rebase anahtar kelimeleri
-i ile açılan düzenleyicide pick yerine bunlardan birini yazın.
| Keyword | What it does |
|---|---|
pick | Commit'i olduğu gibi tutar |
reword | Commit'i tutar, mesajını düzenler |
squash | Önceki commit'e katar, mesajları birleştirir |
fixup | Katar ama bu mesajı atar |
drop | Commit'i tamamen kaldırır |
git rebase SSS
git rebase ne yapar?
Mevcut dalınızdaki commit'leri alır ve sanki çalışmanıza o dalın en son commit'inden başlamışsınız gibi birer birer başka bir dalın üzerine yeniden oynatır. Sonuç, merge commit'i olmayan doğrusal bir geçmiştir. Commit'ler bu süreçte yeniden yazılır (yeni hash'ler alırlar).
İnteraktif rebase nedir?
git rebase -i <base>, <base>'ten bu yana olan commit'leri listeleyen bir düzenleyici açar; burada onları yeniden sıralayabilir, birkaçını tek bir commit'e squash edebilir, mesajları reword edebilir, bir commit'i edit edebilir veya drop ile atabilirsiniz. Dağınık bir commit serisini paylaşmadan önce temizlemenin başlıca aracıdır.Rebase'in altın kuralı nedir?
Başkalarının üzerine çalışma temellendirdiği commit'leri, yani genellikle paylaşılan bir dala push edilmiş her şeyi asla rebase etmeyin. Rebase commit'leri yeniden yazdığı için, bunu yapmak herkesi ayrışmış bir geçmişi uzlaştırmaya zorlar. Yerel, push edilmemiş commit'lerde serbestçe rebase yapın; herkese açık olanlar için merge veya revert kullanın.
Çakışmalı bir rebase'i nasıl düzeltir veya iptal ederim?
Bir rebase bir çakışmada durduğunda, dosyaları çözün, onlara
git add yapın, ardından git rebase --continue çalıştırın. Mevcut commit'i atmak için git rebase --skip, tamamen iptal edip dalı rebase başlamadan önceki haline döndürmek için git rebase --abort kullanın.Bunu çevrimiçi olarak deneyebilir miyim?
Evet.
git rebase'i tarayıcınızdaki gerçek bir kabukta çalıştırmak için terminal playground'u açın, kurulacak hiçbir şey yok. Coddy'nin ücretsiz interaktif Git kursu da rebasing'i adım adım ele alır.