Aslında üçüncü bir elverişlilik vardır - ve büyük olasılıkla bol miktarda, çünkü GIT bir SCM çerçevesinin bir uygulamasıdır, bir SCM metodolojisinin bir uygulamasından daha fazladır. Bu üçüncü olasılık dayanmaktadır rebase
.
rebase
GYTE alt komutu (genellikle konu dalın ucunda için dallanma noktasından işlemek bir dizi alır topic
) ve (genellikle entegrasyon dalın ucunda, örneğin en başka bir yerde tekrar onlara master
). Alt rebase
komut, komisyonların gözden geçirilmesi daha kolay bir biçimde yeniden düzenlenmesi olanağı sağlayan yeni komisyonlar üretir. Bu topic
, entegrasyon dalının en üstünde köklü görünmekle aynı olana benzer yeni bir taahhüt dizisi oluşturur . Bu yeni şubeye hala topic
GIT adı verilir , böylece eski referans atılır. Şubenizin topic-0
orijinal halini topic-1
ve çeşitli refactoring işlemlerini gayrı resmi olarak etiketlerim .
İşte topic
şubenize önerim :
(İsteğe bağlı adım) Sen etkileşimli konu şube rebase topic
onun dallanma noktasında (bkz --fixup
seçeneğini commit
ve -i
ve --autosquash
seçenekleri rebase
size inceleme daha kolay bir şekilde sizin kaydedilmesini yeniden yazmak için fırsat veren). Bu bir dalla sonuçlanır topic-1
.
Konu şubenizi entegrasyon şubenizin en üstünde yeniden birleştirirsiniz, bir birleştirme işlemine benzer, ancak yalnızca bir yazılım mühendisliği eseri olan bir birleştirme ile tarihi “kirletmez”. Bu bir dalla sonuçlanır topic-2
.
topic-2
Tahminine göre inceleyen bir takım arkadaşına gönder master
.
Eğer topic-2
sorun yoksa , usta ile birleştir.
Not - Şube kesin ağacına atıfta bulunur - şubelerin tümü GIT tarafından aynı olarak adlandırılır, bu nedenle işlemin sonunda GIT'de yalnızca şubenin topic-2
adı vardır.
Artıları:
- İncelemede eski kod yok.
- Sahte “yabancı birleşmeler” incelemeleri yok (1'de tanımladığınız fenomen).
- Temiz bir şekilde yeniden yazma fırsatı.
Eksileri:
- Bunun yerine tek bir şubesi
topic-0
, orada üç şube eserler olduğunu topic-0
, topic-1
ve topic-2
ağaç işlemek o oluşturulur. (Her ne kadar herhangi bir zamanda GIT’de sadece birisinin ismi vardır.
1. senaryonuzda «biri" 1 "arasında bir şey birleştirdiyse ve "2." »dallanma noktasının oluşturulması ile birleştirmeye karar verdiğiniz zaman arasında geçen süreyi ifade eder. Bu senaryoda «biri" 1 "arasında bir şey birleştirdiyse ve "2." »rebase ve birleştirme arasında geçen ve genellikle çok kısa olan süreyi ifade eder. Böylece, verdiğim senaryoda master
, birleştirme sırasında şubeyi önemli ölçüde iş akışınızı rahatsız etmeden birleştirme süresi boyunca “kilitleyebilirsiniz” , ancak birinci senaryoda pratik değildir.
Sistematik kod incelemeleri yapıyorsanız, taahhütleri uygun bir şekilde yeniden düzenlemek iyi bir fikir olabilir (isteğe bağlı adım).
Ara dal yapılarını yönetmek, yalnızca havuzlar arasında paylaşmanız durumunda bir zorluk yaratır.