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.
rebaseGYTE 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 rebasekomut, 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 topicGIT adı verilir , böylece eski referans atılır. Şubenizin topic-0orijinal halini topic-1ve ç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 topiconun dallanma noktasında (bkz --fixupseçeneğini commitve -ive --autosquashseçenekleri rebasesize 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-2Tahminine göre inceleyen bir takım arkadaşına gönder master.
Eğer topic-2sorun 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-2adı 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-1ve topic-2ağ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.